zoukankan      html  css  js  c++  java
  • Java异常 Exception类及其子类

    C语言时用if...else...来控制异常,Java语言所有的异常都可以用一个类来表示,不同类型的异常对应不同的子类异常,每个异常都对应一个异常类的对象。

     Java异常处理通过5个关键字try、catch、finally、throw、throws进行管理。基本过程是用try包住要监视的语句,如果在try内出现异常,则异常会被抛出,catch中捕获抛出的异常并做处理,finally一定会完成未尽事宜。

    练习:

    package com.swift;
    
    public class Exception1
    {
        public static void main(String args[]){
            System.out.println("=========计算开始=========");
            try{
                int i=Integer.parseInt(args[0]);
                int j=Integer.parseInt(args[1]);
                int temp=i/j;
                System.out.println("计算结果:"+ temp);
            }catch(ArithmeticException e){
                System.out.println("出现了数学异常 "+ e);
            }catch(ArrayIndexOutOfBoundsException e){
                System.out.println("出现了数组异常 "+ e);
            }catch(NumberFormatException e){
                System.out.println("出现了格式异常 "+ e);
            }catch(Exception e){
                System.out.println("其他异常 "+e);
            }finally{
                System.out.println("不管是否有异常,我都执行。");
            }
            System.out.println("=========计算结束=========");
        }
    }

    throws标识此方法出异常但不处理,谁调谁处理。

    package com.swift;
    
    public class Exception3
    {
        public static void main(String args[]) throws Exception{
            Operate o=new Operate();
            System.out.println("=============计算之前==============");
            
                int temp=o.div(Integer.parseInt(args[0]),Integer.parseInt(args[1]));
                System.out.println("计算结果"+temp);
            System.out.println("=============计算之后==========");
        }
    }
    class Operate
    {
        public int div(int i,int j) throws Exception{
            int temp=i/j;
            return temp;
        }
    }

    如果main也throws了,异常抛给了JVM,其实你一个throws不写,JVM依然会默默地处理着异常

    注意:一旦方法throws,main必须有回应,否则编译不过。main继续抛相当于出异常之后的程序戛然而止(没有"=============计算之后=========="),这时可用catch捕获抛来的异常进行处理。

    package com.swift;
    
    public class Exception3
    {
        public static void main(String args[]) throws Exception{
            Operate o=new Operate();
            System.out.println("=============计算之前==============");
            try {
                int temp=o.div(Integer.parseInt(args[0]),Integer.parseInt(args[1]));
                System.out.println("计算结果"+temp);
            }catch(Exception e){
                System.out.println("出现了什么异常情况 "+e); 
            }
            System.out.println("=============计算之后==========");
        }
    }
    class Operate
    {
        public int div(int i,int j) throws Exception{
            int temp=i/j;
            return temp;
        }
    }

    异常被处理,计算前后正常输出。

    throw与throws不同,throw抛出的不是异常类,而是对象,可以人造的对象。

    package com.swift;
    
    public class Exception4 {
        public static void main(String args[]) {
            try {
                throw new Exception("抛着玩呢 "); // 抛出人造异常对象
            } catch (Exception e) { // 再捕捉这个对象
                System.out.println("你抛的是什么呢?"+e);
            }
        }
    
    }

    如果不想抛Exception类的对像,要抛自己的

    package com.swift;
    
    public class Exception5 {
        public static void main(String args[]) {
            try {
                throw new MyException("自定义异常。");
            } catch (Exception e) {
                System.out.println("这个异常是 " + e); // e.printStackTrace();
            }
        }
    }
    //通过继承实现自己的异常类
    class MyException extends Exception {
        public MyException(String msg) {
            //把参数传给父类
            super(msg);
        }
    }
  • 相关阅读:
    TS 3.1
    TS 3.1
    MDN 教程
    MDN 教程
    MDN 教程
    MDN 教程
    MDN 教程
    MDN 教程
    cookie会话技术
    数据库语法-1
  • 原文地址:https://www.cnblogs.com/qingyundian/p/7804526.html
Copyright © 2011-2022 走看看