先写理论后写实践作业,
文章目录
理论作业
1、下列选项中哪个不是异常?
选:D
2、对于try{…}catch子句的排列方式,下列正确的一项
选:A
3、以下对异常描述正确的是:
答案:C
4、当方法遇到异常又不知如何处理,下列哪种说法是正确的
选:B
5、下列关于必检异常或非必检异常描述正确的是:
选:b
6、自定义异常类时,可以继承的类是
选:C
7、说明Throw和Throws的作用及它们的联系和区别
区别一:throw是语句抛出一个异常;throws是方法抛出的一个异常。
在throws中,[throws<异常类>],其中:异常类可以声明多个,用逗号分割
throw语法:throw<异常对象>,在方法声明1中,添加throws子句表示该方法抛出异常。
区别二:throws可以单独使用,但throw不能
区别三:throw要么1和try-catch-finally语句配套使用,要么与throws配套使用
8、下列代码运行的结果是:
package exception;
public class Demo06 {
public static void main(String[] args) {
System.out.println(func());
}
public static int func(){
int a = 10;
try{
System.out.println("try中的代码块");
return a += 10;
}catch (Exception e){
System.out.println("catch中的代码块");
}finally {
System.out.println("finally中的代码块");
if(a > 10){
System.out.println("a > 10,"+"a="+a);
}
}
return a += 50;
}
}
try中的代码块
finally中的代码块
a > 10,a=20
20
9、阅读下列代码,找出其中的错误更正
import java.io.*;
import java.util.Scanner;
class Father{
void f()throws IntException{
//①
throw new IntException("");
}
}
class Son extends Father{
//①
void f()throws Exception{
throw new Exception("");
}
}
public class Test{
public static void main(String args[]){
Son s=new Son();
try{
s.f();
}
System.out.println("");//③
catch (Exception e1){
//②
System.out.println(e1);
}
catch(IntException e){
//②
System.out.println(e);
}
finally {
System.out.println("乐了乐了");
}
System.out.println("看看结果吧");
}
}
class IntException extends Exception{
IntException(String message){
super(message);
}
}
回答:子类不能给父类抛出更多异常,try…catch要连着用,删除代码//③。先catch子类异常,在catch父类异常。
10、写一个方法void triangle(int a,int b,int c),判断三个
写一个方法void triangle(int a,int b,int c),判断三个参数是否能构成一个直角三角形, 如果不能则抛出异常IllegalArgumentException, 显示异常信息a,b,c "不能构成直角三角形,如果可以构成则显示该直角三角形面积, 在主方法中得到命令行输入的三个整数。调用此方法,并捕获异常。
package com.company;
import java.util.Arrays;
import java.util.Scanner;
class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
try {
triangle(a,b,c);
}catch (IllegalArgumentException e){
String message = e.getMessage();
System.out.println(message);
}
}
public static void triangle(int a,int b,int c){
int[] array = new int[3];
array[0] = a;
array[1] = b;
array[2] = c;
Arrays.sort(array);
if (array[0]*array[0]+array[1]*array[1] == array[2]*array[2]){
//可以构成直角三角形
System.out.println("直角三角形面积"+0.5*array[0]*array[1]);
}else {
throw new IllegalArgumentException("不能构成直角三角形");
}
}
}
class IllegalArgumentException extends RuntimeException{
public IllegalArgumentException() {
super();
}
public IllegalArgumentException(String message) {
super(message);
}
}
实验作业
1、计算器输入异常处理
有两个java文件,一个叫做Numop.java,另一个叫做Main.java
package com.company;
import java.text.DecimalFormat;
public class NumOP {
public static void add(int a,int b){
System.out.println(a+"+"+b+"="+(a+b));
}
public static void substract(int a,int b){
System.out.println(a+"-"+b+"="+(a-b));
}
public static void multiply(int a,int b){
System.out.println(a+"*"+b+"="+(a*b));
}
public static void divide(int a,int b){
float c = (float) a;
DecimalFormat df = new DecimalFormat("0.00");
String result = df.format(c/b);
System.out.println(a+"/"+b+"="+result);
}
}
Main.java
package com.company;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;
class Main{
public static void main(String[] args) {
System.out.println("输入两个参数请用空格隔开");
Scanner sc = new Scanner(System.in);
int a,b;
try{
a = sc.nextInt();
b = sc.nextInt();
}catch (InputMismatchException exception){
System.out.println("请输入整数");
return;
}
NumOP.add(a,b);
NumOP.substract(a,b);
NumOP.multiply(a,b);
NumOP.divide(a,b);
}
}
2、捕获异常,抛出异常
第二题一共四个java文件,分别是
OneException
TwoException
ThrowExceptionApp
Main
其中OneException.java
package com.company;
public class OneExeption extends Exception{
public OneExeption(){
super();
}
public OneExeption(String message){
super(message);
}
}
TwoException.java
package com.company;
public class TwoException extends Exception{
public TwoException(){
super();
}
public TwoException(String message){
super(message);
}
}
ThrowExceptionApp.java
package com.company;
public class ThrowExceptioinApp {
public static void g() throws OneExeption{
throw new OneExeption("g抛出的异常");
}
public static void f() throws TwoException{
try{
g();
}catch (OneExeption e){
String message = e.getMessage();
System.out.println(message);
throw new TwoException("f 抛出的异常");
}
}
}
Main.java
package com.company;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;
import static com.company.ThrowExceptioinApp.f;
class Main{
public static void main(String[] args) {
try{
f();
}catch(TwoException e){
String message = e.getMessage();
System.out.println(message);
}
}
}
3、处理学生成绩
一个main文件
Main.java
package com.company;
import java.io.CharArrayReader;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;
import static com.company.ThrowExceptioinApp.f;
class Main{
public static void main(String[] args) {
try{
int[] ints = inputScore();
if(ints != null){
Arrays.sort(ints);
System.out.println(Arrays.toString(ints));
}
}catch(RuntimeException e){
String message = e.getMessage();
System.out.println(message);
}
}
public static int[] inputScore() throws RuntimeException{
Scanner sc = new Scanner(System.in);
int i = 0;
int[] arr = new int[10];
for(i =0;i<10;i++){
int score;
try{
score = sc.nextInt();
if(score == -1){
break;
}
}catch(InputMismatchException e){
System.out.println("Please input integer:");
return null;
}finally {
if(i<10){
System.out.println("You input " + (i+1)+"student score!");
}
}
arr[i] = score;
i++;
}
if(i<9){
throw new RuntimeException("please input at least 10 students score");
}
return arr;
}
}
4、十六进制转换异常
两个java文件
HexFormatException .java
package com.company;
public class HexFormatException extends RuntimeException{
public HexFormatException(){
super();
}
public HexFormatException(String message){
super(message);
}
}
Main.java
package com.company;
import java.io.CharArrayReader;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;
import static com.company.ThrowExceptioinApp.f;
class Main{
public static void main(String[] args){
System.out.println("Please a hex number:");
Scanner sc = new Scanner(System.in);
String hex = sc.nextLine();
try{
int dec = hex2dec(hex);
System.out.println(dec);
}catch(HexFormatException e){
String mess = e.getMessage();
System.out.println(mess);
}
}
public static int hex2dec(String hStr){
try{
int decint = Integer.parseInt(hStr,16);
return decint;
}catch(NumberFormatException e){
throw new HexFormatException("Please input a available hex:");
}
}
}