JAVA学习笔记——JAVA基础语法(七)

我们知道java.lang包底下有一个java.lang.Throwable他实现了两个接口,一个是Error;另一个是Exception

其中Error:致命的错误,不可修复的,一般出现在JAVA虚拟机

接下来我们主要来介绍一下Exception

一、Exception:异常,代码写错了

  1、编译时异常:编译的时候要检查,并且一定要写try-catch编译才能通过

  2、运行时异常,他是比较特殊的一个异常,变现为编译时正常,运行的时候出异常  RuntimeException是java.lang包底下的所有的异常当中的唯一一个运行时的异常;其中常出现的异常有

ArrayIndexOutOfBoundsException

NumberFormatException

NullPointException:当一个引用的值为NULL的时候,试图用他来调用方法或者访问属性就会发生空指针异常

下面这个代码也说明了NumberFormatException这个异常,同时也了解try-catch语句块的使用方法:

import java.util.*;

public class test{

         public static void main(String[] args){

                   try{

                            int num1 = new Integer(args[0]);

                            int num2 = new Integer(args[1]);

                            int num3 = num1 + num2;

                            System.out.println(num3);

                   }catch(NumberFormatException e){

                            System.out.println("请输入合法的整数!!");

                   }finally{

                     System.out.println("计算完成");

                   }

         }       

}

  程序详解:这个程序如果输入计算的数字的时候输入了非整数就会执行catch语句块里面的代码,也就是说如果try语句块里面的代码运行时出现了异常那么try语句块里面异常语句下面的代码就不会再执行,转而执行catch语句块里面的语句,但是finally语句块是始终都会执行的,不管程序有没有发生异常他里面的语句都会执行。

  知识扩展try-catch语句块可以捕获多个异常,但是要注意的是先捕获子类的异常再捕获父类的异常

 二、Throws、Throw关键字

  1、Throws关键字 :把异常抛给调用他的环境也就是说把异常往上一级抛

  2、Throw关键字:手动抛出,用于自己写的异常,今后会在strus框架个性化异常的时候使用。下面这个简单的程序详细的实现该关键字的使用方法

import java.util.*;

public class test{
         public static void main(String[] args){

                   Person p = new Person();
                   p.SetAge(134);
         }       
}

class Person{
         int age;
         public void SetAge(int age){
                   if(age<0||age>120){
                       throw new MyAgeException("年龄是在0到120岁之间");
                   }
                   else{

                            this.age = age;

                   }
         }
}

class MyAgeException extends RuntimeException{

         MyAgeException(String msg){

                   super(msg);
         }
}

 

  程序详解:上述程序自己手动的写了一个异常MyAgeException继承至RuntimeException当main函数传入年龄的时候我们自己对传入的年龄进行判断,如果不符合条件的话就使用关键字throw新建一个MyAgeException异常对象并把异常传给这个对象,同时传入一个异常的提示信息。因为父类中已经写好了显示信息的方法,所以我们只要调用父类的显示方法即可,所以重写MyAgeException 构造方法的时候方法体里面直接调用父类的方法super(msg)来显示信息

你可能感兴趣的:(java基础)