<span style="font-size:18px;">下述程序段,哪些程序编译通不过
程序段1
import java.io.*;
public class ExceptionTest{
public static void main(String[] args){
try{
test();
}catch(Exception ex){
//ex.printStackTrace();
System.out.println("main");
}
}
static void test(){
try{
throw new Exception("test");
}catch(Exception ex){
ex.printStackTrace();
System.out.println("test");
}
}
}
</span>
程序段2:
<span style="font-size:18px;">import java.io.*;
public class ExceptionTest{
public static void main(String[] args){
try{
test();
}catch(Exception ex){
//ex.printStackTrace();
System.out.println("main");
}
}
static void test(){
throw new Exception("test");
}
}
</span>
程序段3:
<span style="font-size:18px;">import java.io.*;
public class ExceptionTest{
public static void main(String[] args){
try{
test();
}catch(Exception ex){
//ex.printStackTrace();
System.out.println("main");
}
}
static void test() throws Exception{
throw new Exception("test");
}
}
</span>
程序段4
<span style="font-size:18px;">import java.io.*;
public class ExceptionTest{
public static void main(String[] args){
try{
test();
}catch(Exception ex){
ex.printStackTrace();
System.out.println("main");
}
}
static void test() throws Exception{
}
}
</span>
程序段5
import java.io.*;
public class ExceptionTest{
public static void main(String[] args){
test();
}
static void test(){
try{
throw new Exception("test");
}catch(Exception ex){
ex.printStackTrace();
System.out.println("test");
}
}
}
程序段2编译通不过:
ExceptionTest.java:13: 错误: 未报告的异常错误Exception; 必须对其进行捕获或声明以便抛出
throw new Exception("test");
^
1 个错误
throw:抛出异常
throws:声明异常
1、抛出异常而在本程序段中没有捕获的话,必须有声明异常语句,如:程序段3
2、抛出异常而在本程序段中将其捕获,则不需要声明异常
3、只要声明了异常,就必须捕获,而不管是否真的抛出异常。