当前位置:网站首页>Experiment 8 exception handling
Experiment 8 exception handling
2022-07-06 13:55:00 【Wen Wen likes Guo Zia】
Experiment 8 exception handling
The experiment purpose
- Understand the concept of exception and exception handling mechanism
- Master the method of catching exceptions
- Master creating custom exceptions
Experimental hours 2 Class hours
Experimental content
1. Write a program , It is required to input the radius of a circle from the keyboard (double type ), Calculate and output the area of the circle . When no exception handling mechanism is added , The input data is not double Type data ( Such as a string “abc”) What will happen ? After adding the exception handling mechanism , Let the program give an error prompt when entering incorrect type data and ask for re-entry .
package code81;
import java.util.InputMismatchException; // Import input mismatch exception
import java.util.Scanner;
public class code81 {
public static void main(String[] args) {
// TODO Automatically generated method stubs
input:
while(true) { // Loop input
try { // Select the range to catch exceptions
Scanner in = new Scanner(System.in);
double r,area;
System.out.println(" Please enter the radius of the circle :");
r=in.nextDouble();
area=r*r*3.14;
System.out.println(" The area of the circle is :"+area);
}catch(InputMismatchException e) { // Handle input mismatch exceptions
System.out.println(" The input data does not meet the requirements !");
System.out.println(" Please re-enter ");
e.printStackTrace(); // Print the exception information on the command line, the location and cause of the error in the program
continue input; // Keep typing , Make sure the input data is correct
}
}
}
}
2. Analyze the following procedure .
(1) What exceptions will occur when the program runs ? How to catch and handle exceptions ?
(2) Modify the code : No matter whether the program will produce exceptions during execution , Finally, it outputs “ End of program running ”
import java.util.Scanner;
public class ExceptionSample {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a[]=new int[5];
int n,sum=0;
float average;
n=sc.nextInt();
for(int i=0;i<n;i++){
a[i]=sc.nextInt();
sum=sum+a[i];
}
average=(float)sum/n;
System.out.println(average);
}
}
- An input data mismatch exception may occur 、 except 0 abnormal 、 Array out of bounds exception ;
package code82;
import java.util.Scanner;
import java.util.InputMismatchException; // Import input mismatch exception
public class ExceptionSample1 {
public static void main(String[] args) {
// TODO Automatically generated method stubs
Scanner sc=new Scanner(System.in);
int a[]=new int[5];
int n,sum=0;
float average;
n=sc.nextInt();
for(int i=0;i<n;i++) {
try { // Select the range to catch exceptions
a[i]=sc.nextInt();
sum=sum+a[i];
average=(float)sum/n;
System.out.println(average);
}catch(InputMismatchException e) { // Handle input mismatch exceptions
System.out.println(" The input data format does not meet the requirements !");
}catch(ArithmeticException e) { // Processing division 0 abnormal
System.out.println(" except 0 abnormal !");
}catch(ArrayIndexOutOfBoundsException e) { // Handle array out of bounds exception
System.out.println(" Array out of bounds exception !");
}
}
}
}
2. Modify the code : No matter whether the program will produce exceptions during execution , Finally, it outputs “ End of program running ”
package code82;
import java.util.Scanner;
import java.util.InputMismatchException; // Import input mismatch exception
public class ExceptionSample2 {
public static void main(String[] args) {
// TODO Automatically generated method stubs
Scanner sc=new Scanner(System.in);
int a[]=new int[5];
int n,sum=0;
int average;
try { // Select the range to catch exceptions
n=sc.nextInt();
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
sum=sum+a[i];
}
average=sum/n;
System.out.println(average);
}catch(InputMismatchException e) { // Handle input mismatch exceptions
System.out.println(" The input data format does not meet the requirements !");
}catch(ArithmeticException e) { // Processing division 0 abnormal
System.out.println(" except 0 abnormal !");
}finally { // Ensure that the final program is output as required
System.out.println(" End of program running !");
}
}
}
3. Design a program , Enter two integers and an arithmetic operator (+、-、*、/), According to the operator , Calculate the result of two integers . Considering that the data entered by the user is illegal , Need to catch exception ( Data format is abnormal 、 Abnormal division by zero 、 Illegal operator exception ).
package code83;
import java.util.Scanner;
import java.util.InputMismatchException; // Import input mismatch exception
public class Calculate {
public static void main(String[] args) {
// TODO Automatically generated method stubs
Scanner in = new Scanner(System.in);
int a,b;
String c;
try { // Select the range to catch exceptions
System.out.println(" Please enter two integers to be calculated :");
a=in.nextInt();
b=in.nextInt();
System.out.println(" Please enter operator :");
c=in.next();
switch(c) {
case "+":
System.out.println(a + c + b +"="+(a+b));
break;
case "-":
System.out.println(a + c + b +"="+(a-b));
break;
case "*":
System.out.println(a + c + b +"="+(a*b));
break;
case "/":
System.out.println(a + c + b +"="+(a/b));
break;
default:
throw new Exception(); // Declare discard exception
}
}catch(InputMismatchException e) { // Handle data mismatch exceptions
System.out.println(" Data format is abnormal !");
}catch(ArithmeticException e) { // Processing division 0 abnormal
System.out.println(" except 0 abnormal !");
}catch(Exception e) { // Handle default Illegal operator exception discarded in statement
System.out.println(" Illegal operator exception !");
}
}
}
4. Design a program , Calculate the area of a triangle according to its three sides . It is required to customize an exception class IllegaException, In the method of finding the area area() Declare to throw this exception type , An exception is thrown when the data of three sides input from the keyboard cannot form a triangle .
package code84;
import java.util.Scanner;
import java.util.InputMismatchException; // Import input mismatch exception
public class Triangle {
public static double area(int a,int b,int c) throws IllegaException { // Construct a method to calculate the area of a triangle
if(a+b<=c || a+c<=b || b+c<=a || a<=0 || b<=0 || c<=0) {
throw new IllegaException(); // The type of exception thrown
}
double s=(a+b+c)/2.0;
double area=Math.sqrt(s*(s-a)*(s-b)*(s-c));
return area; // Find the area of the triangle
}
public static void main(String[] args) throws IllegaException {
// TODO Automatically generated method stubs
Scanner in = new Scanner(System.in);
int a,b,c;
System.out.println(" Please enter the length of three sides of the triangle :");
try { // Select the range to catch exceptions
a=in.nextInt();
b=in.nextInt();
c=in.nextInt();
System.out.println(" The area of the triangle is :"+area(a,b,c)); // Call the method of finding the area , The value of the output area
}catch(InputMismatchException e) { // Handle input mismatch exceptions
System.out.println(" The input data format does not match !");
}
}
}
package code84;
public class IllegaException extends Exception { // Custom exception classes IllegaException
IllegaException(){ // Construction method
System.out.println(" Such three sides cannot form a triangle !");
}
}
Summary of experiments
- Using exception handling has more advantages than traditional error management techniques ;
- Using exception handling can separate error handling code from normal code ;
- If a method does not know how to handle the exception that occurs , You can declare to discard the exception when declaring the method ;
- Inheritance other than runtime exceptions is from Exception Subclasses of class are collectively referred to as non runtime exceptions , For this kind of exception ,Java The compiler requires that the program must catch or declare to discard exceptions ;
- Capture exception :try...catch...finally;
- Regardless of try Whether there is an exception in the statement block ,finally Statement blocks are executed ;
- If Java The system exception type provided cannot meet the needs of program design , You can design your own exception types .Java Recommend the user's exception type to Exception Is a direct parent class .
边栏推荐
- FAQs and answers to the imitation Niuke technology blog project (I)
- 7-4 散列表查找(PTA程序设计)
- Implementation of count (*) in MySQL
- 4. Branch statements and loop statements
- Mortal immortal cultivation pointer-2
- Nuxtjs quick start (nuxt2)
- [au cours de l'entrevue] - Comment expliquer le mécanisme de transmission fiable de TCP
- 7-15 h0161. 求最大公约数和最小公倍数(PTA程序设计)
- The difference between cookies and sessions
- TypeScript快速入门
猜你喜欢
Strengthen basic learning records
MySQL lock summary (comprehensive and concise + graphic explanation)
QT meta object qmetaobject indexofslot and other functions to obtain class methods attention
Have you encountered ABA problems? Let's talk about the following in detail, how to avoid ABA problems
hashCode()与equals()之间的关系
Callback function ----------- callback
Safe driving skills on ice and snow roads
MATLAB打开.m文件乱码解决办法
.Xmind文件如何上传金山文档共享在线编辑?
使用Spacedesk实现局域网内任意设备作为电脑拓展屏
随机推荐
【黑马早报】上海市监局回应钟薛高烧不化;麦趣尔承认两批次纯牛奶不合格;微信内测一个手机可注册俩号;度小满回应存款变理财产品...
3. Input and output functions (printf, scanf, getchar and putchar)
MySQL lock summary (comprehensive and concise + graphic explanation)
Miscellaneous talk on May 14
Custom RPC project - frequently asked questions and explanations (Registration Center)
Have you encountered ABA problems? Let's talk about the following in detail, how to avoid ABA problems
【MySQL-表结构与完整性约束的修改(ALTER)】
Reinforcement learning series (I): basic principles and concepts
【VMware异常问题】问题分析&解决办法
Service ability of Hongmeng harmonyos learning notes to realize cross end communication
[the Nine Yang Manual] 2019 Fudan University Applied Statistics real problem + analysis
Wechat applet
7-7 7003 组合锁(PTA程序设计)
Relationship between hashcode() and equals()
The difference between overloading and rewriting
[the Nine Yang Manual] 2020 Fudan University Applied Statistics real problem + analysis
Intensive literature reading series (I): Courier routing and assignment for food delivery service using reinforcement learning
[hand tearing code] single case mode and producer / consumer mode
C language Getting Started Guide
1. Preliminary exercises of C language (1)