Java Exception异常

Java Exception异常:异常类型体系结构 和 处理异常。
    一、异常类型体系结构:Throwable.
        (一)Exception异常
            (1)RuntimeException : 运行时异常
                1.RuntimeException类及其子类,编译期不需要强制进行处理
                    a.NullPointerException:空指针异常
                    b.NumberFormatException:数字格式化异常
                      产生的原因:对非数字内容的字符串,进行数字类型的转换
                    c.ArrayIndexOutBoundsException:数组下标越界
                    d.StringIndexOfBoundsException:字符串下标越界
                    e.ArithmeticException:算术逻辑异常(int)
                    f.UnsupportedEncodingException:该编码不支持异常
                    g.. ClassCastException:类型转换异常
                    g.Exception:未知异常类型
            (2)IOExceptio检查异常(编译器异常)
                1.直接或间接的继承自Exception,编译前必须处理该异常类型
        (二) Error运行期错误
            (1)导致虚拟机宕机
            (2)OutOfMemoryError 内存溢出错误
            (3)StackOverError 栈溢出
    二、处理异常(五种方式)
        (一)try...catch(通过try...catch捕获运行期间的异常)
            (e.printStackTrace();//打印异常的堆栈信息)
            //计算商品价格
            public class Text02 {
            public static void main(String[] args) {
                Scanner input = new Scanner(System.in);
                double price = 0;
                int count = 0;
        
                try {
                    System.out.println("请输入商品的单价:");
                    price = input.nextDouble();
            
                    System.out.println("请输入商品的数量:");
                    count = input.nextInt();
            
                }catch(InputMismatchException e) {
                    System.out.println("输入的商品单价或数量有误!");
                    //e.printStackTrace();    
                }
                double total = price * count;
                System.out.println("商品小计:"+total);
            }}
        (二)try...catch...finally
            public static int dosth() {
                //情况1
                int n = 10;
                try {
                    n++;
                    return n; //把return的返回值缓存起来
                }catch(Exception e) {
                    e.printStackTrace();
                    return -1;
                }finally {
                    n++;
                }          //输出
                
                //情况二
                int n1 = 10;
                try {
                    n1++;
                    return n1;
                }catch(Exception e) {
                    e.printStackTrace();
                    return -1;
                }finally {
                return ++n1;//从finally退出,并方法返回值
                }        //输出
                //写法一:try-catch-finally
                Scanner input = null;
                try {
                    input = new Scanner(System.in);
            
                    int n1 = input.nextInt();
                    int n2 = input.nextInt();
                    System.out.printf("%d+%d=%d",n1,n2,n1+n2);
                }catch(Exception e) {
                    e.printStackTrace();
            
                }finally {
                    //最终关闭Scanner
                    input.close();
                }
                //写法二:try-with-resource
                //在try块结束时,自动关闭Scanner
                try(Scanner scan = new Scanner(System.in)){
                    int n1 = scan.nextInt();
                    int n2 = scan.nextInt();
                    System.out.printf("%d+%d=%d",n1,n2,n1+n2);
                }catch(Exception e) {
                    e.printStackTrace();
                }
        (三)try...finally
        (四)throw---抛出异常对象
            用throw抛出异常,用throws声名异常。
        (五)throws---声明异常类型
 

你可能感兴趣的:(java,开发语言)