zoukankan      html  css  js  c++  java
  • Java基础知识强化之IO流笔记04:throw和throws的区别

    1. throw概述

    在功能方法内部出现某种问题,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。

    2. 案例演示:

    (1)

     1 package com.himi.throwdemo;
     2 
     3 public class ExceptionDemo2 {
     4     public static void main(String[] args) {
     5          method();
     6         
     7 //        try {
     8 //            method2();
     9 //        } catch (Exception e) {
    10 //            e.printStackTrace();
    11 //        }
    12     }
    13 
    14     public static void method() {
    15         int a = 10;
    16         int b = 0;
    17         if (b == 0) {
    18             throw new ArithmeticException();
    19         } else {
    20             System.out.println(a / b);
    21         }
    22     }
    23 
    24     public static void method2() throws Exception {
    25         int a = 10;
    26         int b = 0;
    27         if (b == 0) {
    28             throw new Exception();
    29         } else {
    30             System.out.println(a / b);
    31         }
    32     }
    33 
    34 }

    运行结果如下:

    上面调用method方法中,由于b==0,那么就会出现如下:

    throw new ArithmeticException();  就会打印下面的信息

    当然也可以throw new ArithmeticException("我错了");  就会打印下面的信息

    (2)

     1 package com.himi.throwdemo;
     2 
     3 public class ExceptionDemo2 {
     4     public static void main(String[] args) {
     5          //method();
     6         //调用者调用method2()方法,try……catch捕获处理异常。
     7         try {
     8             method2();
     9         } catch (Exception e) {
    10             // TODO 自动生成的 catch 块
    11             System.out.println("catch语句块处理捕获的异常");
    12         }
    13     }
    14 
    15     public static void method() {
    16         int a = 10;
    17         int b = 0;
    18         if (b == 0) {
    19             throw new ArithmeticException("我错了");
    20         } else {
    21             System.out.println(a / b);
    22         }
    23     }
    24 
    25     public static void method2() throws Exception {//这里method2抛出异常Exception,交给调用者处理
    26         int a = 10;
    27         int b = 0;
    28         if (b == 0) {
    29             throw new Exception();//这里是抛出是new Exception(异常的超类),它是编译时期异常,必须处理(上抛)
    30         } else {
    31             System.out.println(a / b);
    32         }
    33     }
    34 
    35 }

     运行程序,效果如下:

    3.throws和throw的区别(面试题)

        throws(异常抛出,不处理

                        用在方法声明后面,跟的是异常类名

                        可以跟多个异常类名,用逗号隔开

                        表示抛出异常,由该方法的调用者来处理

                        throws表示出现异常的一种可能性,并不一定会发生这些异常

         throw(异常处理,打印信息

                        用在方法体内,跟的是异常对象名

                        只能抛出一个异常对象名

                        表示抛出异常,由方法体内的语句处理

                        throw则是抛出了异常,执行throw则一定抛出了某种异常

  • 相关阅读:
    GC算法 垃圾收集器
    JVM内存结构
    java类的加载机制
    Spring Boot:Web 综合开发
    构建微服务:Spring boot 入门篇
    Spring Boot:Spring Boot 中 Redis 的使用
    Spring Boot:Thymeleaf 使用详解
    Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)
    用ActionBar的ActionProvider的时候报错:cannot be cast to android.view.ActionProvider
    百度图片API
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4844318.html
Copyright © 2011-2022 走看看