gpt4 book ai didi

java - 如果发生异常则转至Try block

转载 作者:太空宇宙 更新时间:2023-11-04 07:10:26 24 4
gpt4 key购买 nike

我在 Java 中 try catch 时遇到问题

 private void Bağlan_ButonActionPerformed(java.awt.event.ActionEvent evt) {                                             
// TODO add your handling code here:
String user=Uname_Textfield.getText();
String pwd= new String (Password_PasswordField.getPassword());
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://192.168.131.10;" + "databaseName=Digitalk;" + "user=" + user + ";" + "password=" + pwd + ";";
Connection con = DriverManager.getConnection(connectionUrl);
}
catch (SQLException e) {
JOptionPane.showMessageDialog(this, "Kullanıcı Adı veya Şifre Yanlış!");
}
catch (ClassNotFoundException cE) {
System.out.println("Class Not Found Exception: "+ cE.toString());
}
new ProgramPenceresi().setVisible(true);
dispose();
}

我在 loginscreen.java 类中有上面的按钮操作代码。如果发生 sqlexception,我已经捕获它并向用户显示警告消息。当用户单击“确定”时,ProgramPenceresi.java 将出现在屏幕上。

我希望如果发生 SqlExceptions 则显示消息,并且当用户单击“确定”时再次转到登录屏幕。如果没有发生sqlExceptions,则可以调用ProgramPenceresi.java

我该怎么做?

最佳答案

将这些调用移至 try/catch block 内:

   private void Bağlan_ButonActionPerformed(java.awt.event.ActionEvent evt) {                                             
// TODO add your handling code here:
String user=Uname_Textfield.getText();
String pwd= new String (Password_PasswordField.getPassword());
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://192.168.131.10;" + "databaseName=Digitalk;" + "user=" + user + ";" + "password=" + pwd + ";";
Connection con = DriverManager.getConnection(connectionUrl);
new ProgramPenceresi().setVisible(true);
dispose();
} catch (SQLException e) {
JOptionPane.showMessageDialog(this, "Kullanıcı Adı veya Şifre Yanlış!");
} catch (ClassNotFoundException cE) {
System.out.println("Class Not Found Exception: "+ cE.toString());
}
}

我根本不喜欢这段代码。根本没有层次感。您不应该以这种方式混合 UI 和数据库代码。您应该外部化数据库参数。以这种方式驱动逻辑不应该有异常(exception)。您至少需要尝试 MVC 分离。

您刚刚费尽心思打开的连接对您没有任何好处。它对于方法来说是本地的,因此当您退出该方法时,它将有资格进行垃圾回收。您不会使用它在您发布的代码中进行任何 SQL 调用,因此除非您稍后添加它们,否则它将被浪费。

使用它或失去它。

不要从 catch block 将简单消息打印到 System.out。打印或记录整个堆栈跟踪。它为您提供的信息比您的消息多得多;您会发现从完整的堆栈跟踪中进行调试更容易。

关于java - 如果发生异常则转至Try block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20725945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com