java第十六天-异常体系

Posted fzj读你

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java第十六天-异常体系相关的知识,希望对你有一定的参考价值。

异常体系
a.异常:是在运行时期发生的不正常情况
b.Throwable 类是 Java 语言中所有错误或异常的超类;它有两个子类:Error和Exception;
c.Exception又分为两类:一种是CheckedException,一种是UncheckedException.这两种Exception的区别主要是CheckedException
需要用try…catch…显示的捕获,而UncheckedException不需要捕获。通常UncheckedException又叫做RuntimeException。
情况1:
String name=”“;
try
//报错

catch (ArithmeticException e)

e.printStackTrace();//1
name=”323”;//2
return name;//5

finally

System.out.println(“Welcome”);//3
name=”323232323”;//4

return name;//不执行
情况2:
try
//报错

catch (ArithmeticException e)

e.printStackTrace();//1
name=”323”;//2
return name;//3,执行了

finally

System.out.println(“Welcome”);//4
name=”323232323”;//5
return name;//6 执行了

情况3:
一个try后面可以跟多个catch,但不管多少个,最多只会有一个catch块被执行。
d.异常处理方法
对于非运行时异常(checked exception),必须要对其进行处理,否则无法通过编译。
1.使用try..catch..finally进行捕获
public class ExceptionTest2

public void method() throws Exception // 将异常抛出,由调用这个方法的方法去处理这个异常,如果main方法也将异常抛出,则交给Java虚拟机来处理

System.out.println(“Hello World”);

                        // 抛出异常
                        throw new Exception();
                    

                    public static void main(String[] args)
                    
                        ExceptionTest2 test = new ExceptionTest2();

                        try
                        
                            test.method();
                        
                        catch (Exception e)
                        
                            e.printStackTrace();
                        
                        finally
                        
                            System.out.println("Welcome");
                        
                    
                
            2.在产生异常的方法声明后面写上throws 某一个Exception类型,如throws  
              Exception,将异常抛出到外面一层去.
              public class ExceptionTest2
                
                    public void method() throws Exception // 将异常抛出,由调用这个方法的方法去处理这个异常,如果main方法也将异常抛出,则交给Java虚拟机来处理
                    
                        System.out.println("Hello World");

                        // 抛出异常
                        throw new Exception();
                    
                    public static void main(String[] args) throws Exception // main方法选择将异常继续抛出
                    
                        ExceptionTest2 test = new ExceptionTest2();

                        test.method(); // main方法需要对异常进行处理

                        // 执行结果:
                        // Hello World
                        // Exception in thread "main" java.lang.Exception
                        // at com.learnjava.exception.ExceptionTest2.method(ExceptionTest2.java:10)
                        // at com.learnjava.exception.ExceptionTest2.main(ExceptionTest2.java:17)
                    

                
            3.对于运行时异常(runtime exception),可以对其进行处理,也可以不处理。推荐不对运行时异常进行处理.
              自定义异常可以实现RuntimeException。
            4.自定义异常
                所谓自定义异常,通常就是定义一个类,去继承Exception类或者它的子类。因为异常必须直接或者间接地继承自Exception类
                    自定义一个异常类型:
                        public class MyException extends Exception
                        
                            public MyException()
                            
                                super();
                                
                            public MyException(String message)
                            
                                super(message);
                            
                        
                        一种异常处理方式
                        public class ExceptionTest4
                        

                            public void method(String str) throws MyException
                            
                                if(null == str)
                                
                                    throw new MyException("传入的字符串参数不能为null!");
                                
                                else
                                
                                    System.out.println(str);
                                
                            

                            public static void main(String[] args) throws MyException //异常处理方式1,不断向外抛出
                            
                                ExceptionTest4 test = new ExceptionTest4();
                                test.method(null);
                            
                            
                            异常处理方式2
                            public static void main(String[] args)
                            
                                //异常处理方式2,采用try...catch语句
                                try
                                
                                    ExceptionTest4 test = new ExceptionTest4();
                                    test.method(null);

                                
                                catch (MyException e)
                                
                                    e.printStackTrace();
                                    
                                finally
                                
                                    System.out.println("程序处理完毕");
                                

                            

以上是关于java第十六天-异常体系的主要内容,如果未能解决你的问题,请参考以下文章

二刷java基础第十六天——泛型和类型通配符

java面试第十六天

javaSE第十六天

软考笔记第十六天之UML深入学习

Java自学第十六天

IT十八掌掌第十六天课程总结