从实际开发角度来看不管使用哪种都是可以的,业界标准如下
-
如果问题特别严重,开发人员很容易犯,强烈的提醒开发人员注意,那就抛编译时期异常,写完编译不通过就会报错,而后进一步对其处理
-
如果问题不严重,开发人员一般不会出现这种问题,那就抛出运行时期异常,编译通过,后续报错再处理
自定义运行时期异常,运行时异常,不需要显式地在方法上使用throws声明,调用者可以选择捕获或不捕获。
点击查看代码
import java.io.*;
import java.lang.*;
import java.math.*;
import java.net.*;
import java.nio.*;
import java.security.*;
import java.text.*;
import java.time.*;
import java.util.*;
public class App {
public static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.print("Please Enter age:");
int age = scanner.nextInt();
setAge(age);//并未捕获
try {
int age = scanner.nextInt();
setAge(age);// 捕获
} catch (Exception e) {
e.printStackTrace();
}
}
private static void setAge(int age) {
if(0<age&&age<150)
System.out.println("age is legal");
else
throw new AgeIllegalRuntimeException("age is illegal "+age);
}
}
//自定义运行时期异常 该异常类是一个运行时异常,不需要显式地在方法上使用throws声明,调用者可以选择捕获或不捕获。
class AgeIllegalRuntimeException extends RuntimeException{
public AgeIllegalRuntimeException() {
}
public AgeIllegalRuntimeException(String message) {
super(message);
}
}
Please Enter age:250
Exception in thread "main" AgeIllegalRuntimeException: age is illegal 250
at App.setAge(App.java:24)
at App.main(App.java:18)
自定义编译时期异常,该异常类是一个受检查异常,所以方法上需要使用throws AgeIllegalException声明,调用者必须显式地处理这个异常,例如使用try-catch块。
点击查看代码
import java.io.*;
import java.lang.*;
import java.math.*;
import java.net.*;
import java.nio.*;
import java.security.*;
import java.text.*;
import java.time.*;
import java.util.*;
public class App {
public static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.print("Please Enter age:");
try {
int age = scanner.nextInt();
setAge(age);// 捕获
} catch (Exception e) {
e.printStackTrace();
}
}
private static void setAge(int age) throws AgeIllegalException{
if (0 < age && age < 150)
System.out.println("age is legal");
else
throw new AgeIllegalException("age is illegal " + age);
}
}
// 自定义编译时期异常 该异常类是一个受检查异常,所以方法上需要使用throws AgeIllegalException声明,调用者必须显式地处理这个异常,例如使用try-catch块。
class AgeIllegalException extends Exception {
public AgeIllegalException() {
}
public AgeIllegalException(String message) {
super(message);
}
}
/*
* Please Enter age:250
* AgeIllegalException: age is illegal 250
* at App.setAge(App.java:33)
* at App.main(App.java:22)
*/
在Java中,源代码首先经过编译器(javac)编译成字节码文件(以.class为扩展名),然后通过Java虚拟机(JVM)来运行这些字节码文件。
具体流程如下:
编写源代码: 开发者使用文本编辑器或集成开发环境(IDE)编写Java源代码,保存文件以.java为扩展名。
编译源代码: 使用Java编译器(javac)将源代码编译成字节码文件。这个过程会生成与每个类对应的.class文件,其中包含了字节码。
JVM负责将字节码文件解释成机器码或通过即时编译(Just-In-Time Compilation)转换成本地机器码,然后执行程序。
标签:Exception,java,RuntimeException,age,AgeIllegalException,import,异常,public From: https://www.cnblogs.com/itcq1024/p/18068058