- java处理异常的语法
try { //可能出现异常的代码 }catch (参数:异常的类型 e) { //捕获try中可能出现的异常 }
当程序出现异常时,由catch进行捕获,程序自己来处理异常,程序可以继续向下执行。
[注]用try catch 处理异常时注意:
(1)catch块当中,一定要捕获相应的异常,如果程序抛出的异常在catch块中不能被捕获,那么就会交给JVM处理,导致程序中断。
(2)可以通过catch捕获多个异常。
(3)不建议直接捕获exception,要捕获具体的异常。
int[] array = {1,2,3};
try {
system.out.println (array[4]);
}
catch (NullPointerException e) {
e.printStackTrace();
system.out.println ("捕获到了空指针异常");
}
catch (ArrayIndexOfBoundsException e) {
e.printStackTrace();
system.out.println ("捕获到了数组越界异常");
}
2.finally
[注]:
(4)无论是否抛出异常,finally块的代码一定会被执行,所以finally经常做一些善后的工作,比如关闭资源。
(5)不建议在finally当中出现return语句。
3.自定义异常
[注]:一定要继承一个父类异常,最好继承Exception。好处是它必须处理这个异常。
import org.omg.CORBA.UserException;
import sun.security.util.Password;
//自定义异常1
class UserException extends Exception {
public UserException(String message) {
super(message);
}
}
//自定义异常2
class PasswordException extends Exception {
public PasswordException(String message) {
super(message);
}
}
public class TestDemo {
private static String userName = "admin";
private static String password = "123456";
public static void main(String[] args) {
try {
login("admin","123456");
} catch (UserException userError) {
userError.printStackTrace();
} catch (PasswordException passwordError) {
passwordError.printStackTrace();
}
}
public static void login(String userName,String password) throws UserException,
PasswordException {
if (!TestDemo.userName.equals(userName)) {
throw new UserException("用户名错误!");
}
if (!TestDemo.password.equals(password)) {
throw new UserException("密码错误!");
}
System.out.println("登陆成功");
}
}