java学习日常
异常处理
Java程序中的错误可以分为三种:
① syntax 语法错误
② semantics 语义错误(逻辑错误)
③ runtime 运行时错误
Java语言针对程序运行时错误设计了专门的异常处理机制,即try-catch机制。Java API为异常处理机制提供描述不同异常情况的异常类。(try-catch机制将在后面的博客中详细介绍)
1.语法错误
(示列代码如下:)
package textclass;
import java.util.Scanner;
public class SyntaxError {//先定义一个存在语法错误的类
int Div(int n) //自定义一个非静态成员方法
{
int result;
result=100/n;
return result;
}
public static void main(String[] args) {
int N;
Scanner sc=new Scanner(System.in); //实例化一个Scanner键盘扫描器类的对象
N=sc.nextInt();
int retValue=Div(N); //语法错误:静态方法不能调用实例方法
System.out.println("100÷"+N+"="+retValue);
}
}
下面是编译后给出的错误提示:
SyntaxError.java:18
表示错误的类型和所在行数
Cannot make a static reference to the non-static method Div(int) from the type SyntaxError
提示函数主方法是静态方法不能访问实例方法DIV(int)这是语法错误
(注:静态方法之所以不能访问实例方法,是因为静态变量(字段)不能访问实例变量,而实例方法有可能会间接访问实例变量)
2.语法错误
代码举例:
package textclass;
import java.util.Scanner;
public class SyntaxError {//先定义一个存在语法错误的类
static int Div(int n) //自定义一个非静态成员方法
{
int result;
result=100*n; //语义错误(逻辑错误)将除法写成乘法,语法正确但语义错误
return result;
}
public static void main(String[] args) {
int N;
Scanner sc=new Scanner(System.in); //实例化一个Scanner键盘扫描器类的对象
N=sc.nextInt();
int retValue=Div(N);
System.out.println("100÷"+N+"="+retValue);
}
}
代码执行结果:
正确结果应该是:
100÷2=50
Java编译器不能帮助程序员发现语义(逻辑)错误,不会有报错提示,这个时候就需要程序员自己通过运行测试,来发现错误。
3.运行时错误
代码举例:
package textclass;
import java.util.Scanner;
public class SyntaxError {//先定义一个存在语法错误的类
static int Div(int n) //自定义一个非静态成员方法
{
int result;
result=100/n;
return result;
}
public static void main(String[] args) {
int N;
Scanner sc=new Scanner(System.in); //实例化一个Scanner键盘扫描器类的对象
N=sc.nextInt();
int retValue=Div(N);
System.out.println("100÷"+N+"="+retValue);
}
}
运行结果
报错显示不能被“0”除
程序运行时,因运行环境差异或用户操作不当造成的程序运行是错误统称为程序运行时错误。发现错误的过程又称之为“抛异常”,所以要通过异常处理机制来处理异常。