异常

广义上的异常:程序中出现的任何不正常的

狭义上的异常:指的是程序在运行时出现的不正常的情况,可以使用异常处理机制来处理的

package exception;
//广义上的异常:程序中出现的任何不异常的   错误
//狭义上的异常:指的是程序中在运行时出现的不正常情况,可以使用异常处理机制来处理的
//一般的运行时异常,可以处理的,虚拟机默认处理方式是停止运行
public class Demo1 {
    //错误  一旦程序运行时出现错误,程序是无法解决
    /*public static void main(String[] args) {
        Demo1 m=new Demo1();
        m.sum(10);
    }
    public int sum(int num){
        return sum(num-1);
    }*/

    public static void main(String[] args) {
        //数组异常
      /*  int []a=new int[6];
        a[6]=10;
*/

        //算术异常
       /* int a=10;
        int b=0;
        System.out.println(a/b);*/


        //类型转换异常
        Object obj="asd";
        Integer m=(Integer)obj;
        System.out.println(m);


        //空指针异常  使用的对象值为null关键值
      /*  String s=null;
        s.length();
        System.out.println(s.length());*/
        System.out.println(123);
    }
}

异常处理

package exception;
//异常处理
public class Demo2 {

    public static void main(String[] args) {
        int a=10;
        int b=0;
        String s=null;
        try {
            //可能出现异常的代码
            int c = a / b;
                //捕获的异常类型
        }catch (ArithmeticException e){
            //异常处理
            System.out.println("算术异常,除数不能为0");
        }
        try {
            s.length();
        }catch (NullPointerException e){
            System.out.println("空指针异常");
        }

        System.out.println("asdfg");
    }
}
package exception;

public class Demo3 {

    public static void main(String[] args) {
        int a=10;
        int b=2;
        int []arr=new int[4];
        try {
            int c=a/b;
            arr[4]=8;
        }catch (ArithmeticException e){
            System.out.println("算数异常");
        }catch (Exception e){//当有多个catch时,父类异常的类型需要放在下面
            System.out.println("系统繁忙");
        }
        System.out.println(123);
    }
}
package exception;

public class Demo4 {
    public static void main(String[] args) {
        System.out.println(Demo4.test());
      /*  try{
            System.out.println(10/0);
        }catch(ArithmeticException e){
            System.out.println("算数异常");
        }finally {
            System.out.println("后面的代码");
        }*/
        //finally的第一种使用情况
        /*try {
            System.out.println(10/0);//发生异常,但是没有处理,程序不能继续向后执行,但是finally中的代码可以执行
        }finally {
            System.out.println("finally");
        }
        System.out.println("后面的代码");*/

    }
    //如有异常先catch再执行finally的,最后再执行return的
    public static int test(){
     try {
         int a=10;
         int b=0;
         int c=a/b;
         return c;
     }catch (Exception e){
         System.out.println("算数异常");
         return -1;
     }finally {//即使出现异常,finally总会执行
         System.out.println("finally");
     }
    }
}
package exception;

import java.io.UnsupportedEncodingException;

public class Demo5 {
    //在顶层不能再抛出,必须进行处理
    public static void main(String[] args) {
        try {
            Demo5.test1();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            System.out.println("不支持");
        }
    }
    //声明test1()可能抛出异常
    public static void test1() throws UnsupportedEncodingException {
        Demo5.test2();
    }
    //模拟是一个偏底层方法,这样的一般不try{} catch(){} 继续声明此方法可能会出现异常,作为方法的声明(定义)
    //throws UnsupportedEncodingException(编译期异常)提示方法调用的地方在编译期间就要做出处理
    //throws NullPointerException (运行期异常) 在编译期间不显示的提示处理
    public static void test2() throws UnsupportedEncodingException,NullPointerException  {
        String s="asd";
        s.getBytes("utf-88");
        System.out.println("asd");

    }
}
package exception;

import java.io.UnsupportedEncodingException;

public class Demo6 {

    public static void main(String[] args) {
        try {
            Demo6.trans(101);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();//在控制台打印出异常的信息
            System.out.println(e.getMessage());//获得下面异常的原因

        }
    }
    public static String trans(int score) throws UnsupportedEncodingException {
        if(score>100||score<0){
            //throw在方法中显示的抛出个异常,类的对象表示此处实际发生的异常
            //new+有参构造方法描述了异常的原因
            throw new UnsupportedEncodingException("非法分数");
        }
        if(score>90){
            return "A";
        }else{
            return "B";
        }
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值