JAVA异常处理(后端开发)
Java异常处理之try-catch之异常捕获
JAVA中提供了一种捕获异常的机制:try-catch
try{
...
}
catch(Exception e) {
异常处理代码
}
...
举例:除数不能为0
import java.util.Scanner;
public class ExcTest {
public static void main(String[] args) {
// 第一步:接收给定的整数
Scanner x=new Scanner(System.in);
int a=x.nextInt();
int b=x.nextInt();
// 第二步:求给定两个数的商,并捕获除数为0的异常
try{
int q=a/b;
System.out.print(q);
}
catch(Exception e)
{
System.out.print("除数不能为0");
}
}}
finally语句
Java异常处理之finally语句之输出所有元素
不管有没有出现异常,
finally
中的语句块都会执行,即使当try
和catch
中出现return
时,仍会执行。
finally语句通常用来释放资源,关闭数据库,关闭文件等操作
/*
任务:接收给定的一行字符串,实现以下需求:
1.通过-切割字符串,得到一个字符串数组;
2.将数组中每个元素转化为int类型,使用finally输出所有元素;
3.捕获数据类型转换异常,当捕获到异常时,输出“元素x不能转换为整数”。
字符串样式:98-32-java-hao-tian。
切割后的字符串数组中的元素有些不由数字组成,当我们把这些元素转换为int类型时,会生成一个叫做数据类型转换的异常。
程序功能示例:
输入字符串:8-9-se-10
输出样例:
元素8
元素9
元素se不能转换为int类型
元素se
元素10
*/
import java.util.Scanner;
public class ExcTest {
public static void main(String[] args) {
// 切割给定的一行字符串,得到一个字符串数组,
// 将数组中每个元素转化为int类型,使用 finally 输出所有元素,并捕获数据类型转换异常
Scanner scanner = new Scanner(System.in); // 接收给定的字符串
String s = scanner.nextLine();
String[] split = s.split("-"); // 切割字符串,得到一个数组
for(String str:split) { // 将数组中所有元素转化为int类型,并捕获异常
try {
int x = Integer.parseInt(str);
} catch (Exception e) {
System.out.println(String.format("元素%s不能转换为int类型", str));
}
finally { // 使用finally输出所有元素
System.out.println("元素"+str);
}
}
}
}
/**
*next()方法只有扫描到有效字符后才会结束输入(用户没有输入的时候不会结束);
*next()方法会自动去掉空白(例如回车、空格等),也不能得到带有空格的字符串;
*nextLine()方法可以直接使用回车结束输入。nextLine()方法可以得到空白和带有空格的字符串。
*/
自定义异常
class 自定义异常名 extends Exception{
public 自定义异常名(){
}
// msg代表抛出异常后显示的信息提示
public 自定义异常名(String msg){
super(msg);
}
}
public class tt {
public static void main(String[] args) throws MyException {
int i=0;
if(i==0){ // 当i=0时抛出自定义异常
throw new MyException("我是自定义异常");
}
}
}
// 自定义异常
class MyException extends Exception{
public MyException(){
}
// msg代表抛出异常后显示的信息提示
public MyException(String msg){
super(msg);
}
}
Java异常处理之自定义异常之判断用户名
import java.util.Scanner;
public class ExcTest {
public static void main(String[] args) throws MyException {
// 第一步:接收给定的字符串
Scanner input = new Scanner(System.in);
String str = input.next();
// 第二步:判断用户名长度是大于3还是小于3,如果小于3,抛出异常,否则输出提示语句
if (str.length() < 3){
throw new MyException("用户名小于三位Exception");//抛出异常
}else {
System.out.println("用户名格式正确");
}
}
}
// 第三步:自定义异常
class MyException extends Exception{
public MyException(){
}
public MyException(String name){
super(name);
}
}
输出:
Exception in thread "main" MyException: 用户名小于三位Exception
at ExcTest.main(ExcTest.java:11)