IOException及其子类(FileNotFoundException等),都属于检测型异常
运行时异常可以处理,也可以不处理,是可选的
所有的异常类是从 java.lang.Exception 类继承的子类
检测异常的方法:
try{
System.out.println(num1/num2);
}catch(ArithmeticException e){ -->当num2=0时,显示“除数不能为0”
System.out.println(“除数不能为0”); -->当num2!=0时,直接正常输出结果
}
有时候,一段有问题的代码,编译能通过但是运行不了,那我们就需要让它使用throw关键字“抛出异常”
public class Task {
/********* Begin /
//请在合适的部位添加代码
public static void main(String[] args) throws FileNotFoundException {
test();
}
public static void test() throws FileNotFoundException {
File file = new File(“路径名”);
if(!file.exists()){ //判断文件是否存在
//文件不存在,则 抛出 文件不存在异常
throw new FileNotFoundException(“该文件不存在”);
}else{
FileInputStream fs = new FileInputStream(file);
}
}
/ End *********/
}
自定义抛出异常:
class 自定义异常名 extends Exception{
//因为Exception已经实现了很多异常处理的方法了属性了,
//所以自定义异常只需要将信息传递给父类(使用super关键字)即可
}
具体例子:
public class Task {
/********* Begin *********/
public static void main(String[] args) throws MyException {
Scanner sc = new Scanner(System.in);
String username = sc.next();
int len=username.length();
if(len<3) {
throw new MyException(“用户名小于三位Exception”);
}
else{
System.out.println("用户名格式正确");
}
//判断用户名
}
}
class MyException extends Exception{
private static final long serialVersionUID =1L;
public MyException(){
}
public MyException(String msg){
super(msg);
}
}