Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-未捕获异常_Java_Exception_Try Catch - Fatal编程技术网

Java-未捕获异常

Java-未捕获异常,java,exception,try-catch,Java,Exception,Try Catch,这是我创建的例外 public class UserNaoExiste extends Exception { public UserNaoExiste(){ super("User não existe"); } } 这就是抛出异常的函数(我相信它实际上是被抛出的) 这就是应该捕获异常的地方 private String login(String username, String password) { Entidades.User u =

这是我创建的例外

public class UserNaoExiste extends Exception {

    public UserNaoExiste(){
        super("User não existe");
    }

}
这就是抛出异常的函数(我相信它实际上是被抛出的)

这就是应该捕获异常的地方

private String login(String username, String password) {
        Entidades.User u = null;
        String r = "s";
        try {
            u = udao.getUser(username);
            System.out.println("olaola");
        } catch (Exception e) {
            r = "n";
        }

        System.out.println(r);
        System.out.flush();

        if (r.equals("s") && u.checkPassword(password)) {
            this.user = u;
            this.auth = (u.isAdmin() ? 2 : 1);
        } else {
            r =  "n";
        }
        return r;
    }

实际发生的情况是抛出异常,但很高兴被忽略,println执行,r未设置为“n”,然后它尝试在null上执行u.checkPassword。在我的生活中,我从来没有在编码时如此困惑过。如果在
getUser
方法中得到任何帮助,就会抛出
UserNaoExiste
异常,并在同一方法中捕获该异常

try (Connection con = DriverManager.getConnection(this.url, this.username, this.password)) {
        PreparedStatement stm = con.prepareStatement("SELECT * FROM user WHERE username = ?");
        stm.setString(1, username);
        ResultSet rs = stm.executeQuery();
        if (rs.next() == false) {
            throw new Exceptions.UserNaoExiste();
        }
        u = new Entidades.User(rs.getString("Username"), rs.getString("Password"), rs.getString("Nick"), rs.getString("Admin"));
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
login
方法中,catch语句将永远不会执行,因为
getUser
引发的异常已被该
getUser
方法捕获


您可以捕获数据库相关异常的特定异常
SQLException
,而不是
getUser
方法中的
exception

抛出的异常是在
getUser
中捕获的。它永远无法登录到
,因为您已经捕获了它。
try (Connection con = DriverManager.getConnection(this.url, this.username, this.password)) {
        PreparedStatement stm = con.prepareStatement("SELECT * FROM user WHERE username = ?");
        stm.setString(1, username);
        ResultSet rs = stm.executeQuery();
        if (rs.next() == false) {
            throw new Exceptions.UserNaoExiste();
        }
        u = new Entidades.User(rs.getString("Username"), rs.getString("Password"), rs.getString("Nick"), rs.getString("Admin"));
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }