Java 的try catch 接收到自己抛出的异常
时间: 2023-07-09 15:35:51 浏览: 72
Java 的 `try-catch` 结构可以捕获并处理自己抛出的异常。以下是一个简单的示例代码:
```
public class TestException {
public static void main(String[] args) {
try {
throw new Exception("自定义异常信息");
} catch (Exception e) {
System.out.println(e.getMessage()); // 输出自定义异常信息
}
}
}
```
在这个示例代码中,我们在 `try` 代码块中抛出了一个自定义异常,并在 `catch` 代码块中捕获了这个异常,并打印了异常信息。这样的话,即使是自己抛出的异常,也可以通过 `try-catch` 结构进行捕获和处理。
相关问题
try catch中抛出异常
### 回答1:
在Java中,我们可以使用`throw`关键字在`try-catch`块中抛出异常。`throw`关键字用于抛出一个异常对象,可以是Java内置的异常类,也可以是自定义的异常类。
下面是一个简单的示例,演示了如何在`try-catch`块中抛出一个异常对象:
```java
public static void main(String[] args) {
try {
int result = divide(10, 0);
System.out.println(result);
} catch (ArithmeticException e) {
System.out.println("除数不能为0");
throw e; // 抛出异常对象
}
}
public static int divide(int dividend, int divisor) {
if (divisor == 0) {
throw new ArithmeticException("除数不能为0"); // 抛出异常对象
}
return dividend / divisor;
}
```
在上面的示例中,`divide`方法用于计算两个整数的商,如果除数为0,则抛出一个`ArithmeticException`异常对象。在`main`方法中,我们调用`divide`方法,如果出现异常,则在`catch`块中输出错误信息,并将异常对象重新抛出。这样,在`main`方法中的调用者就可以知道发生了异常,并进行相应的处理。
需要注意的是,在抛出异常对象时,我们可以选择将其原样抛出,也可以使用`throw new`语句重新创建一个异常对象抛出。如果使用`throw new`语句重新创建一个异常对象,则可以在异常对象的构造函数中传入自定义的错误信息,使异常信息更加明确。
### 回答2:
在Java中,try-catch语句块用来捕捉并处理可能抛出的异常。当代码块中的语句发生了异常,try语句块会立即停止执行并进入catch语句块,从而避免程序崩溃。
在try语句块中,我们可以放置可能会抛出异常的代码。如果在try语句块内的代码执行过程中出现异常,程序会立即跳转到catch语句块,而不会继续执行try块中后面的代码。
catch块会定义异常处理的相关逻辑。当catch语句块中的异常类型与try语句块中的异常类型匹配时,catch语句块中的代码将会执行。通过处理异常,我们可以采取相应的措施来恢复程序的正常执行,如输出错误信息、记录日志、进行界面提示等。
在catch语句块中,我们可以使用捕获到的异常对象来获取异常信息,并根据具体情况进行处理。异常对象包含了有关异常类型、引发异常的方法以及异常发生的位置等信息。
通过在catch语句块中捕获异常并处理,我们可以有效地保护程序不会崩溃,同时能够提供更好的用户体验。因此,在开发中,我们通常会将可能引发异常的代码放置在try块中,并在catch块中处理异常。
总的来说,try-catch语句块提供了一种机制,使我们能够在代码中捕获并处理异常,以保证程序的正常执行。这样我们可以更好地控制程序的流程和应对可能出现的错误。
### 回答3:
在编程中,我们经常会使用try-catch语句来捕获并处理异常。
try-catch语句由try块和catch块组成。在try块中,我们可以放置可能会引发异常的代码。一旦try块中的代码引发了异常,程序会跳转到catch块,并执行catch块中的代码来处理该异常。
通过在catch块中捕获异常,我们可以避免程序因为未处理的异常而终止。捕获后,我们可以根据具体情况选择进行异常处理,例如输出错误信息、记录日志、修复异常或重新抛出异常。
在catch块中,需要使用捕获异常类型的参数来接收抛出的异常。可以使用多个catch块来捕获不同类型的异常,以便针对不同类型的异常执行不同的处理逻辑。
try-catch语句的使用可以提高程序的健壮性和可靠性,有效地防止异常导致的程序崩溃或数据丢失。它还可以帮助我们进行调试和定位异常产生的原因,提高程序维护的效率。
总之,通过使用try-catch语句,我们可以捕获抛出的异常,并根据具体情况进行处理,从而提高程序的稳定性和可靠性。
1、(Java常见的异常类)编写一个Java程序,要求在 main() 分别用try-catch语句对以下三种异常进行捕获并显示输出:数组空指针异常,字符串空指针异常,数组下标越界异常; 2、(由方法抛出异常)编写一个Java程序,要求在程序中定义一个能抛出异常的方法,该方法接收三个参数,若第2个参数为0,则抛出算术异常,若第3个参数小于或等于0,则抛出空指针异常。在main()方法中捕获并处理该异常; 3、(主动抛出异常)编写一个Java程序,在程序中定义一个异常类,在main()方法中使用throw语句抛出异常; 4、(泛型类定义与方法的调用)编写一个Java程序,定义泛型类和泛型类的方法,然后创建一个泛型类对象,调用泛型类对象输出相应的结果; 5、(内部类)编写一个Java程序,要求在程序中定义一个School类,在School类中定义一个内部类Student,分别创建这两个类的对象,访问各个对象中的方法,输出各种结果; 6、(Lambda表达式)编写一个Java程序,用Lambda表达式实现接口中的方法;
1、Java程序如下:
```java
public class ExceptionDemo1 {
public static void main(String[] args) {
int[] arr = null;
String str = null;
try {
// 数组空指针异常
System.out.println(arr.length);
} catch (NullPointerException e) {
System.out.println("数组空指针异常:" + e.getMessage());
}
try {
// 字符串空指针异常
System.out.println(str.length());
} catch (NullPointerException e) {
System.out.println("字符串空指针异常:" + e.getMessage());
}
try {
int[] array = {1, 2, 3};
// 数组下标越界异常
System.out.println(array[3]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组下标越界异常:" + e.getMessage());
}
}
}
```
2、Java程序如下:
```java
public class ExceptionDemo2 {
public static void main(String[] args) {
try {
int result = div(10, 0, -1);
System.out.println("result = " + result);
} catch (ArithmeticException e) {
System.out.println("算术异常:" + e.getMessage());
} catch (NullPointerException e) {
System.out.println("空指针异常:" + e.getMessage());
}
}
public static int div(int a, int b, int c) throws ArithmeticException, NullPointerException {
if (b == 0) {
throw new ArithmeticException("除数不能为0");
}
if (c <= 0) {
throw new NullPointerException("除数小于等于0");
}
return a / b * c;
}
}
```
3、Java程序如下:
```java
public class ExceptionDemo3 {
public static void main(String[] args) {
try {
throw new MyException("自定义异常");
} catch (MyException e) {
System.out.println(e.getMessage());
}
}
}
class MyException extends Exception {
public MyException(String message) {
super(message);
}
}
```
4、Java程序如下:
```java
public class GenericDemo<T> {
private T data;
public GenericDemo(T data) {
this.data = data;
}
public T getData() {
return data;
}
public static void main(String[] args) {
GenericDemo<Integer> intDemo = new GenericDemo<>(123);
System.out.println(intDemo.getData());
GenericDemo<String> strDemo = new GenericDemo<>("Hello");
System.out.println(strDemo.getData());
}
}
```
5、Java程序如下:
```java
public class School {
private String schoolName = "Java School";
class Student {
private String name;
public Student(String name) {
this.name = name;
}
public void show() {
System.out.println("学校名称:" + schoolName + ",学生姓名:" + name);
}
}
public void addStudent(String name) {
Student student = new Student(name);
student.show();
}
public static void main(String[] args) {
School school = new School();
school.addStudent("Tom");
}
}
```
6、Java程序如下:
```java
public class LambdaDemo {
public static void main(String[] args) {
MyInterface myInterface = () -> System.out.println("使用Lambda实现接口方法");
myInterface.show();
}
}
interface MyInterface {
void show();
}
```
阅读全文