zoukankan      html  css  js  c++  java
  • 异常处理---抛与踹

    异常概述:

      异常是指在程序运行过程中发生的异常事件 , 如I0溢出,数组下标越界,找不到文件等,这些事件发生会导致程序不能正常运行。因此,为了加强程序的健壮性,在进行程序设计时,必须考虑可能发生的异常事件并要做出相应的处理。Java通过面向对象的方法来处理异常/。如果在一个方法的运行过程中发生了异常,则这个方法生成代表该异常的一个对象,并把它交给运行时系统,运行使系统会寻找相应的代码来处理繁盛的异常。我们吧生成异常对象帮把它交给运行时系统这一过程称为抛出(throw)一个异常。

    Java 异常体系 :
    Error  : 错误  出现错误引发程序崩溃
    Exception  : 分为 IOException 和  RuntimeException引起线程中断, 是所有异常的基类。
    checked Exception 检测异常,要求必须被捕获处理,比如IOException
    Runtime Exception 运行时异常,也叫做unchecked Exception
      
     
    异常的处理方式;
    一 : 积极的异常处理方式。 
    package javaBasics;
    
    public class test5 {
    
        public static void main(String[] args) {
            int i = 10;
            int j = 0;
            try{
              int temp = i/j;                        //此处会产生异常
              System.out.println("计算结果:"+temp);
            }catch(Exception e){
                System.out.println("出现异常:"+e);    //打印异常信息
                e.printStackTrace();            //打印完整的异常信息
            }finally{
                System.out.println("不管是否出现异常都执行此代码");
            }
            System.out.println("计算结束");
        }
    
    }

    积极的异常处理方式的捕获顺序 ;

     
     1 public class ExceptionDemo2 {
     2     public static void main(String[] args) {
     3         String s = "abc";
     4     try{
     5         s.charAt(5);
     6     }catch(StringIndexOutOfBoundsException e){
     7         System.out.println("StringIndexOutOfBoundsException");
     8     }catch(IndexOutOfBoundsException e){
     9         System.out.println("IndexOutOfBoundsException");
    10     }catch (Exception e) {
    11         System.out.println("Exception");
    12     }
    13     }
    14 }

     二  消极的异常处理方式:

    public void test() throws Exception{
            // 消极的异常处理方式, 表示当前方法一旦发生异常,则自己不做处理,而将异常交给上级方法进行处理.
    }
     
    三  Exception和error:
    Exception表示程序中遇到的异常,可以用try catch进行捕获
    error一般指jvm错误,程序中无法捕获

    (拓展:Throwable是Exception的父类,可不可以直接使用Throwable呢?

    首先,使用Throwable捕获异常,在代码中是没有任何问题的,但在开发中一般不会使用Throwable处理,因为其有Exception和error两个子类,Error本身不需要程序处理,而程序中需要处理的是Exception 所以没有必要使用Throeable)

    四  Throw和Throws关键字 
     Throws:在定义一个方法时,使用Throws关键字声明,表示此方法不处理异常,而是交给调用方法来处理

    (注意:不要在main方法中使用throws,main方法为一切方法的起点,一切的操作也是由主方法开始的,所以,如果在主方法中使用throws,则程序出现问题后肯定交由jvm处理,将会导致程序中断。)

    Throw:Throw关键字是人为的抛出异常,直接抛出异常的实例化对象。

    package javaBasics;
    
    public class test5 {
     
        public static void main(String[] args) {
            try{
                throw new Exception("自己抛出异常");      //抛出异常的实例化对象
            }catch(Exception e){
                e.printStackTrace();                    //捕获异常
            }
        }
     
    }

    Throw和Throws结合应用范例:

    以下代码也是开发中使用较多的处理方式

     
    package javaBasics;
     
    public class Math {
        public int div(int i,int j) throws Exception{
            int temp = 0;
            try{
              temp = i/j;
            }catch(Exception e){    //捕获异常
                throw e;            //把异常交给被调用处处理
            }finally{
                System.out.println("计算结束");
            }
            return temp;
        }
    }

    自定义异常:

    package javaBasics;
    
    public class MyException extends Exception{     //自定义异常类继承Exception类
        public MyException(String msg){             //构造方法接受异常信息
            super(msg);                             //调用父类中的构造方法
        }
    }
    
    public class test5 {
        public static void main(String[] args) {
            try{
                throw new MyException("自定义异常信息");//抛出异常
            }catch(Exception e){                    //异常捕获处理
                e.printStackTrace();
            }
        }
     
    }

    Exception和runtimeException

    Exception在程序中必须使用try。。。catch处理。

    RuntimeException可以不用try。。。catch处理,产生异常后直接交给JVM处理。(在开发中最好使用try。。。catch进行处理)。

    自古英雄出炼狱,从来富贵入凡尘。
  • 相关阅读:
    MVC设计模式和三层架构
    Servlet使用反射机制
    JSP的工作原理
    Servlet相关的几种乱码
    Word发送至博客园
    使用为知笔记上传到博客园
    idea乱码问题
    Servlet快速入门及运行流程
    【转】SQL注入及mybatis中#{}和${}的区别
    我的这个时代与你们
  • 原文地址:https://www.cnblogs.com/yunliu0603/p/9644663.html
Copyright © 2011-2022 走看看