Java中的throws与throw关键字

作者:苗老师,华清远见嵌入式学院讲师。

Java中的异常处理还是比较有意思的!就是该你管就你管,不是你该管的,最好不要越级管理!不然我这级管理存在就没有意义!

Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally。这里我主要说一下throw,throws。

throws语句

throws总是出现在方法声明时,用来标明该成员方法可能抛出异常。如果是多个异常,使用逗号隔开。对大
多数Exception子类来说,Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型。如果异常的类型是Error或
RuntimeException, 或它们的子类,这个规则不起作用, 因为这在程序的正常部分中是不期待出现的。
如果你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的类型。

throw语句

throw总是出现在方法体中,用来抛出一个异常。程序会在throw语句后立即终止,它后面的语句执行不到。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要抛出的异常。

如果一个方法显示的标识抛出异常,则必须使用try—catch语句。

以下是一个自定义异常类的例子:

class MyException extends Exception { //创建自定义异常类
                     String message; //定义String类型变量
                     public MyException(String ErrorMessagr) {  //父类方法
                             message = ErrorMessagr;
                     }

public String getMessage(){   //覆盖getMessage()方法
                             return message;
                     }
             }
             public class Captor { //创建类
                     static int div(int x,int y) throws MyException{//定义方法抛出异常
                             if(y < 0){  //判断参数是否小于0
                                     throw new MyException("除数不能是负数");//异常信息
                             }
                             return x/y;//返回值
                     }
                     public static void main(String args[]){ //主方法
                             try{ //try语句包含可能发生异常的语句
                                     div(3,-1);//调用方法
                             }catch (MyException e) { //处理自定义异常
                                     System.out.println(e.getMessage()); //输出异常信息
                             }
                             catch (Exception e) { //处理其他异常
                                     System.out.println("程序发生了其他的异常");
                                     //输出提示信息
                             }
                     }
             }

时间: 2025-01-14 18:30:15

Java中的throws与throw关键字的相关文章

JAVA中的throws和throw的区别

Java 一直对java中的throws和throw不太理解.最近一直在查这两个方面的资料,算是能明白一点吧.如果我下面的观点哪有不对,希望指出来,我加以改进. throw:(针对对象的做法) 抛出一个异常,可以是系统定义的,也可以是自己定义的.下面举两个例子: 抛出Java中的一个系统异常: public class One { public void yichang(){ NumberFormatException e = new NumberFormatException(); throw

Java -- 异常的捕获及处理 -- throws与throw关键字

7.2 throws 与 throw关键字 7.2.1 throws 关键字 在定义一个方法时可以使用throws关键字声明,使用throws声明的方法标识此方法不处理异常,而交给方法的调用处进行处理. 例:使用throws关键字 例:处理异常 提示: 在主方法中也可以使用throws关键字,但主方法为程序的起点,所以此时主方法再向上抛异常,则只能将异常抛给JVM进行处理.主方法为一切的起点,如果在主方法中使用throws,则程序出现问题后肯定交由JVM进行处理,将导致程序中断,不建议在主方法上

Java中关于原子操作和volatile关键字

Java中关于原子操作和volatile关键字 第一种:采用同步synchronized解决,这样虽然解决了问题,但是也降低了系统的性能. 第二种:采用原子性数据Atomic变量,这是从JDK1.5开始才存在的针对原子性的解决方案,这种方案也是目前比较好的解决方案了.

Java 中几个重要的关键字

Java中的关键字特别多,大致如下: 访问控制 private protected public 类,方法和变量修饰符 abstract class extends final implements interface native new static strictfp synchronized transient volatile 程序控制 break continue return do while if else for instanceof switch case default 异常

java中稍微有些陌生的关键字

1. instance of java中,instance of 用来指出某个对象是否为某个特定类的实例,如果是返回一个bool类型,来指出该对象是否为某个特定类或其子类的一个实例 resutl = object instance of class interface A{} class B implements A { } class C extends B { } public class InstanceOfTest { public static void main(String[] a

Java中替代C# ref/out 关键字方案:

刚学习Java不久,今天遇到一个问题,需要在方法中修改传入的对象的值,确切的说是需要使用一个方法,创建一个对象,并把其引用返回,熟悉C#的我的第一反应就是C#中的ref/out关键字,结果发现Java中没有类似的关键字,所以只能想想如何解决此问题. 参数传递:方法的参数传递有两种,一种是值传递,一种是引用传递,但是其实都是拷贝传递. 值传递:就是把传递的[数据本身拷贝一份],传入方法中对其进行操作,拷贝的是值.引用传递:就是把指向某个对象的[引用拷贝一份],传入方法中通过此引用可以对对象进行操作

关于Java中try catch finally throw return的执行顺序问题

try {          normal statement;     //1.          exception occurred;   //2.          return "try";      } catch (Exception ex) {     normal statement;     //3.          return "catch";      } finally {          normal statement;     

Java中的break和continue关键字使用总结

一.作用和区别 break的作用是跳出当前循环块(for.while.do while)或程序块(switch).在循环块中的作用是跳出当前正在循环的循环体.在程序块中的作用是中断和下一个case条件的比较. continue用于结束循环体中其后语句的执行,并跳回循环程序块的开头执行下一次循环,而不是立刻循环体. 二.其他用途 break和continue可以配合语句标签使用.这个都很简单,下面给个综合实例,看看就明白 了: /** * Created by IntelliJ IDEA. * U

22、在方法中抛出异常,使用throw关键字抛出异常

package com.exception.demo; public class Captor { /** * @param args * Exception是所有异常类的父类 * 如果将它的代码块方其他两个代码块前面,后面的代码块将永远得不到执行 * 所以 catch 语句的顺序不可调换 * * 异常的使用原则: * 1.在当前方法中使用 try - catch 语句捕获异常 * 2.一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类 * 3.如果父类抛出多个异常,则覆盖方法必须抛出