异常(Exception)

异常在Java中是用于问题的反馈和处理的机制java

Throwable是全部异常或错误的超类数组

区分异常和错误:ide

错误:一旦出现,不能处理函数

异常:出现后能够处理,处理方式:捕获或者继续抛出this

捕获方式:(try{}catch(){})spa

1、多个异常处理方式不一样,用多个catch分别捕获分别处理指针

2、全部异常处理方式都同样,捕获一个父类异常统一处理code

3、多个异常分红不一样组,不一样组之间能够用 | 隔开分组处理(JDK1.7开始)orm

注意:try-catch同时出现,意味着try不必定能执行成功,try在不是必然成功的前提下,try中的return不必定执行blog

try{ return 1; } catch(Exception e){ e.printStackTrace(); }

报错会提示:This method must return a result of type int,此时在catchreturn一个int型数据便可,或在catch方法结束后返回一个int型的值

 

Java中的一些异常提示:

编译时异常:编译的时候就出现,因为在编译的时候就已经出现,因此要求必须处理。 

CloneNotSupportedException 不支持克隆异常

ParseException 解析异常(日期或者字符串格式化时可能会抛出这个异常) 

package cn.jay.exer; import java.text.SimpleDateFormat; import java.util.Date; public class Exer14 { public static void main(String[] args) throws Exception { /* String str = "2018-7-18 13:12:11"; SimpleDateFormat sdf = new SimpleDateFormat(); Date date = sdf.parse(str); System.out.println(date); //java.text.ParseException: Unparseable date: "2018-7-18 13:12:11" */ String str = "2018-7-18 13:12:11"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date = sdf.parse(str); System.out.println(date); } } 

运行时异常:运行的时候才出现,能够处理,也能够不处理。 --- RuntimeException(全部运行时异常父类)

ArithmeticException 算数异常(整数/0)

ArrayIndexOutofBoundsException数组下标越界异常

NullPointerException 空指针异常

PatternSyntaxException 正则格式异常

NumberFormatException 数字格式化异常

Integer in=new Integer("0x456");

ClassCastException 类转换异常

ArrayStoreException 数组存储异常

InputMismatchException 输入不匹配异常(switch语句实现简单计算器时出现) 

EmptyStackException 空栈异常

ConcurrentModificationException 当前标记异常(标记不匹配)

List<String> list = new LinkedList<>();


//中间代码省略


Iterator<String> it = list.iterator();


//中间代码省略


it.remove(); //不报错


list.remove(); //报错
View Code 

NotSerializableException 不能序列化异常

后续遇到其它异常会继续更新...

Java中异常处理流程(读取文件时的路径异常处理)

public class Test{
    public static void main(String[] args) throws PathNotExistException{
                //若读入的文件路径必然正确,则异常不用捕获处理,直接抛出便可
        try{
                //异常捕获处理后,主函数中不用抛出异常
            //读取文件
            String msg = readTxt("H:\\test.txt");
        }catch(PathNotExistException){
            //进行异常处理
                        System.out.println(e.getMessage());
        }
    }
public static String readTxt(String path) throws PathNotExistException{
        //文件路径可能不存在,此时应该抛出异常,方便其余使用该文档的人清楚其中可能出现的异常状况,若是方法中捕获的是父类异常,要在上面单独的捕获方法后再catch一个父类异常,且该父类异常必须在单独异常以后
                if(path.startWith("H:\\")){
                throw new PathNotExistException("警告:路径以H开头!");
            }        
            return "文件读取成功!";
}
//自定义异常(PathNotExistException)
class PathNotExistException extends Exception{
        private String message;
        public PathNotExistException(){}
        Public PathNotExistException(String message){
                this.message =message;
        }
        public String getMessage(){
        return message;
        }
}
View Code

自定义异常:定义一个类继承某个异常类,若是继承的是Exception或者是其它的异常,那么定义了一个编译时异常;若是继承的是RuntimeException或者是它的子类,那么定义的就是一个运行时异常。

方法重载时,对异常的范围没有限定

方法重写时,子类抛出的编译时异常不能超过父类编译时异常的范围

相关文章
相关标签/搜索