Java 程序设计 LAB08
#
实验目的
#
- 掌握异常处理机制
- 掌握使用
try…catch…finally
处理异常 - 掌握使用
throws
关键字 - 掌握使用
throw
关键字 - 创建用户自定义异常,并处理这种异常
实验题目
#
Question1 Java中的检查型异常 (checked exception)
和非检查型异常 (unchecked exception)
有什么区别? 简答
#
Question2 简述Java异常处理中 throws
和 throw
关键字的作用。 简答
#
Question3 请列出2个常见的运行时异常和2个非运行时异常。 简答
#
Question4 指出下列程序的错误并改正。 改错
#
import java.io.IOException;
public class p04 {
public static void start() throws IOException,RuntimeException{
throw new RuntimeException("Unable to Start");
}
public static void main(String[] args){
try{
start();
}catch (Exception ex){
ex.printStackTrace();
}catch (RuntimeException re){
re.printStackTrace();
}
}
}
Question5 指出下列程序的错误并改正。 改错
#
//SuperClass.java
import java.io.IOException;
public class SuperClass {
public void start() throws IOException{
throw new IOException("Unable to start");
}
}
//SubClass.java
import java.io.FileInputStream;
public class SubClass extends SuperClass {
public void start() throws Exception{
throw new Exception("Unable to open file");
}
public void open(String fileName){
FileInputStream fis=new FileInputStream(fileName);
}
}
Question6 写出以下程序的输出。 程序输出
#
public class p06 {
public static void main(String[] args) {
try {
methodA();
} catch (Exception e) {
methodB();
}
}
private static void methodA() {
try {
System.out.println("methodA抛出一个异常!");
throw new RuntimeException();
} finally {
System.out.println("执行methodA的finally!");
}
}
private static void methodB() {
try {
System.out.println("methodB执行!");
} finally {
System.out.println("执行methodB的finally!");
}
}
}
Question7 写出以下程序的输出,试着解释三个函数不同输出的原因。 程序输出
#
public class p07 {
public static void main(String[] args) {
System.out.println("-----------------------");
System.out.println(get0());
System.out.println("-----------------------");
System.out.println(get1());
System.out.println("-----------------------");
System.out.println(get2());
System.out.println("-----------------------");
}
public static int get0(){
int i=1;
try{
throw new Exception();
}catch (Exception e){
System.out.println("error");
return i;
}finally {
i++;
System.out.println("i in finally block:"+i);
}
}
public static String get1(){
String i="ok";
try{
throw new Exception();
}catch (Exception e){
System.out.println("error");
return i;
}finally {
i+="finally";
System.out.println("i in finally:"+i);
}
}
public static StringBuilder get2(){
StringBuilder i=new StringBuilder("ok");
try{
throw new Exception();
}catch (Exception e){
System.out.println("error");
return i;
}finally {
i.append("finally");
System.out.println("i in finally:"+i);
}
}
}
Question8 编写程序完成以下要求。 编程
#
- 自定义类
Triangle
,其中有成员 x,y,z
作为三边长,类型为 double
,构造方法 Triangle(a,b,c)
分别给 x,y,z
赋值 - 求面积方法
public double getArea()
- 显示三角形信息(三个边长)
public void showInfo()
- 上述两个方法中当三条边不能构成一个三角形时要抛出自定义异常
NotTriangleException
,否则显示正确信息。 - 在测试类
Triangle_Test
中的主方法中构造一组 Triangle
对象,显示三角形信息和面积,要求捕获异常。