概述
在今后的开发过程中,有些情况我们根本没有权限去做一些处理异常,或者说我们根本处理不了,干脆就不处理。为了解决这样的问题,并且还能保证程序正常运行的情况下,Java针对这种情况,提供了另外一个解决异常的方式:throws抛出(跟在方法后面)。
throws
格式:
- throws异常类名
- 在方法小括号后面,大括号之前
参考代码1:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class EXceptionDemo8 {
public static void main(String[] args) {
fun();
fun1();
System.out.println("GoodMorning!");
}
public static void fun() throws ParseException ,NullPointerException {
String s = "2021-12-25 6";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(s);
System.out.println(date);
}
public static void fun1() throws NullPointerException {
int[] arr = null;
System.out.println(arr.length);
}
}
参考代码2:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class EXceptionDemo8 {
public static void main(String[] args) {
//方法中没有处理异常,调用者必须处理
try {
fun();
} catch (ParseException e) {
e.printStackTrace();
}
// fun();
fun1();
System.out.println("GoodMorning!");
}
public static void fun() throws ParseException ,NullPointerException {
String s = "2021-12-25 6";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(s);
System.out.println(date);
}
public static void fun1() throws NullPointerException {
int[] arr = null;
System.out.println(arr.length);
}
}
System.out.println("GoodMorning!"); 没有被打印出来。
参考代码3:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class EXceptionDemo8 {
public static void main(String[] args) {
//方法中没有处理异常,调用者必须处理
// try {
// fun();
// } catch (ParseException e) {
// e.printStackTrace();
// }
// fun();
try {
fun1();
}catch (NullPointerException e){
e.printStackTrace();
}
System.out.println("GoodMorning!");
}
public static void fun() throws ParseException ,NullPointerException {
String s = "2021-12-25 6";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(s);
System.out.println(date);
}
public static void fun1() throws NullPointerException {
int[] arr = null;
System.out.println(arr.length);
}
}
通过这3个代码案例我们得到结论,注意事项:
- main方法上尽量不要进行异常抛出,因为程序会停止,后面的代码不会执行,但是这里案例为了方便给大家看,我就直接抛出,记住一件事,以后做开发的时候,不要在main方法上抛出异常。
- 编译时期的异常抛出,方法内部不需要做处理,是由将来调用该方法的调用者处理
- 运行时期异常可以不抛出,但是一旦调用,出错后,后面的代码依旧不会执行
- 最好抛出一个具体的异常类型,官方也是推荐这么做的,可以抛出多个异常,中间用逗号隔开
throw
- 用在方法体内,跟的是异常的类名
- 只能抛出一个异常对象名
- 表示抛出异常,由方法体内的语句处理
- throw则是抛出了异常,执行throw则一定抛出了某种异常
参考代码1:
public class ExceptionDemo9 {
public static void main(String[] args) {
fun();
System.out.println("GoodMorning!");
}
public static void fun(){
int a = 10;
int b = 0;
if (b==0){
System.out.println("异常,除数不能为0");
throw new ArithmeticException();
}else {
System.out.println(a / b);
}
}
}
System.out.println("GoodMorning!"); 没有被打印
参考代码2:
public class ExceptionDemo9 {
public static void main(String[] args) {
try {
fun();
}catch (ArithmeticException e){//ArithmeticException e = new ArithmeticException()
e.printStackTrace();
}
System.out.println("GoodMorning!");
}
public static void fun(){
int a = 10;
int b = 0;
if (b==0){
System.out.println("异常,除数不能为0");
throw new ArithmeticException();
}else {
System.out.println(a / b);
}
}
}
System.out.println("GoodMorning!"); 被打印了
throws和throw的区别
throws:
- 用在方法的声明后面,跟的是异常的类名
- 可以跟多个异常类名,用逗号隔开
- 表示的是可能会发生的异常,抛出给调用者处理,表示的是一种可能性, 不一定会发生这种异常
throw:
- 用在方法体内,跟的是异常对象名
- 只能抛出一个异常对象名
- 表示抛出异常,由方法体内的语句处理
- throw则是抛出了异常,执行throw则一定抛出了某种异常
到底啦!给靓仔一个关注吧
最后
以上就是还单身鸭子为你收集整理的Java处理异常的另一种方式throws和throw及区别---2.0的全部内容,希望文章能够帮你解决Java处理异常的另一种方式throws和throw及区别---2.0所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复