throws和throw抛出异常的使用规则

一直对java中的throws和throw不太理解。最近一直在查这两个方面的资料,算是能明白一点吧。如果我下面的观点哪有不对,希望指出来,我加以改进。

throw:(针对对象的做法)

抛出一个异常,可以是系统定义的,也可以是自己定义的。下面举两个例子:

抛出Java中的一个系统异常:

public class One {
public void yichang(){
NumberFormatException e = new NumberFormatException();
throw e;
}
public static void main(String[] args){
One test = new One();
try{
test.yichang();
}catch(NumberFormatException e){
System.out.println(e.getMessage());
}
}
}
 

抛出一个自定义的异常:

public class People {
 public static int check(String strage) throws MyException{
 int age = Integer.parseInt(strage);
 if(age < 0){
 throw new MyException("年龄不能为负数!");
 }
 return age;
 }
 public static void main(String[] args){
 try{
 int myage = check("-101");
 System.out.println(myage);
 }catch(NumberFormatException e){
 System.out.println("数据格式错误");
 System.out.println("原因:" + e.getMessage());
 }catch(MyException e){
 System.out.println("数据逻辑错误");
 System.out.println("原因:" + e.getMessage());
 }
 }
}
public class MyException extends Exception{
 private static final long serialVersionUID = 1L;
 private String name;
 public MyException(String name){
 this.name = name;
 }
 public String getMessage(){
 return this.name;
 }
}

throws:(针对一个方法抛出的异常)

抛出一个异常,可以是系统定义的,也可以是自己定义的。

抛出java中的一个系统异常:

public class One {
public void yichang() throws NumberFormatException{
int a = Integer.parseInt("10L");
}
public static void main(String[] args){
One test = new One();
try{
test.yichang();
}catch(NumberFormatException e){
System.out.println(e.getMessage());
}
}
}
 

抛出一个自定义异常:

public class People {
public static int check(String strage) throws MyException{
int age = Integer.parseInt(strage);
if(age < 0){
throw new MyException("年龄不能为负数!");
}
return age;
}
public static void main(String[] args){
try{
int myage = check("-101");
System.out.println(myage);
}catch(NumberFormatException e){
System.out.println("数据格式错误");
System.out.println("原因:" + e.getMessage());
}catch(MyException e){
System.out.println("数据逻辑错误");
System.out.println("原因:" + e.getMessage());
}
}
}

public class MyException extends Exception{
private static final long serialVersionUID = 1L;
private String name;
public MyException(String name){
this.name = name;
}
public String getMessage(){
return this.name;
}
}
 

那么下面我要说究竟什么时候用哪种:

如果是系统异常的话可以什么都不用做,也可以针对方法抛出一个异常,因为系统异常是可以被系统自动捕获的,所以这个异常究竟是要在方法内部解决还是交给上层函数去解决其实效果是一样的。但是我查了很多资料,即使会抛出异常能被系统所捕获的话还是建议针对方法写一个throws,因为这样在完成一个大型任务的时候可以让别的程序员知道这里会出现什么异常。

如果是自己定义的异常,则必须要用throws抛出该方法可能抛出的异常,否则编译会报错。

时间: 2024-10-25 21:15:12

throws和throw抛出异常的使用规则的相关文章

抛出异常-throws和throw

package com.mpp.test; import java.util.Scanner; public class TryDemoFour { public static void main(String[] args) { try { testAge(); } catch (Exception e) { e.printStackTrace(); } } /** * throw抛出异常对象的处理方案 * 1. 通过try.catch包含throw的语句--自己抛出自己处理 * 2. 通过t

抛出异常throws与throw

throws throw throws与throw的区别 throw用于在程序中抛出异常,throws用于在声明在该方法中抛出异常. 使用位置不同:throw位于方法体内部,可以作为单独语句:throws必须跟在方法参数列表的后面,不能单独使用. 内容不同:throw抛出一个异常对象,而且只能是一个:throws后面跟异常类,而且可跟多个异常类.

Java中的throws与throw关键字

作者:苗老师,华清远见嵌入式学院讲师. Java中的异常处理还是比较有意思的!就是该你管就你管,不是你该管的,最好不要越级管理!不然我这级管理存在就没有意义! Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally.这里我主要说一下throw,throws. throws语句 throws总是出现在方法声明时,用来标明该成员方法可能抛出异常.如果是多个异常,使用逗号隔开.对大 多数Exception子类来说,Java 编译器会强迫你声明在一个成员

第10章-异常处理 --- 使用throw抛出异常

第10章-异常处理 --- 使用throw抛出异常 (一)抛出异常 如果需要在程序中自行抛出异常,则应使用throw语句,throw语句可以单独使用,throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例. throw语句的语法格式如下: throw ExceptionInstance; 如果throw语句抛出的异常是Checked异常,则该throw语句要么处于try块里,显示捕获该异常,要么放在一个带throws声明抛出的方法中,即把该异常交给该方法的调用者处理;如果

JAVA中的throws和throw的区别

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

Java中throws和throw的区别讲解

当然,你需要明白异常在Java中式以一个对象来看待.并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行.直接进入正题哈:1.用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常. 1.1   throw是语句抛出一个异常.语法:throw (异常对象);         throw e; 1.2   throws是方法可能抛出

throws与throw的对比

1.throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以使用逗号隔开.当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象.如下面例子所示:public class Shoot { 创建类static void pop() throws NegativeArraySizeException {//定义方法并抛出NegativeArraySizeException异常int [] arr = new int[-3];//创建数组}public static

day08(异常处理,创建异常,finally,throws和throw的区别)

异常处理, 异常的产生  运行时异常:程序运行中产生的异常:RuntimeException类.   编译时异常:程序在编译时产生的异常:除了RuntimeException类  其他都是编译时产生的异常.    处理异常两种方式 抛出异常:把异常抛给调用者区解决   throws 抛出异常 捕获异常:编程者自己处理try....catch...finally... 创建异常, 1.自己创建sun公司的异常类对象 public class ClassException { public stat

跟王老师异常(六):抛出异常:使用throw抛出异常

抛出异常:使用throw抛出异常 主讲人:王少华  QQ群号:483773664 学习目标: 1.掌握使用throw抛出异常 2.总结Java中对异常处理的二种方式 一.使用情境 当程序发生错误时,系统会自动抛出异常,这是我们上节使用的throws声明抛出异常,除此以外,Java也允许程序员自行抛出异常.自行抛出异常,使用throw语句完成. 那么什么时候程序员自行抛出异常呢?一般情况下,程序员自行抛出的异常,是由业务产生的,比如性别输和不是"男"或"女",系统是无