【Java】【异常】
java中2种方法处理异常:
1、在发⽣异常的地方直接处理;
2、将异常抛给调用者,让调⽤者处理。
异常分类
1、检查性异常: java.lang.Exception
2、运⾏期异常: java.lang.RuntimeException
3、错误: java.lang.Error
顶层是java.lang.Throwable类,检查性异常、运⾏期异常、错误都是这个类的⼦孙类,
ja va . la n g. Exce pt i on和ja va . la n g. Error继承⾃ja va . la n g. Th rowa ble,⽽
java.lang.RuntimeException继承⾃java.lang.Exception
1、检查性异常:
程序正确,但因为外在的环境条件不满⾜引发。例如:用户错误及I/O问题--程序试图打
开⼀个并不存在的远程Socket端⼝,或者是打开不存在的文件时。这不是程序本身的逻辑
错误,⽽很可能是远程机器名字错误(⽤户拼写错误),对商⽤软件系统,程序开发者必须
考虑并处理这个问题。 java编译器强制要求处理这类异常,如果不捕获这类异常,程序将
不能被编译。
2、运行期异常:
这意味着程序存在bug,如数组越界、 0被除、入参不满足规范...这类异常需要更改程序
来避免, java编译器强制要求处理这类异常。
3、错误:
一般很少见,也很难通过程序解决,它可能源于程序的bug,但⼀般更可能源于环境问
题,如内存耗尽。错误在程序中⽆需处理,由运行环境处理。
/*
栗子 异常 try...catch */ import java.util.Random; public class test_fanxing {
public static void main(String[] args){
int x = new Random().nextInt(5);
int y = new Random().nextInt(10);
int[] z = new int[5];
try{
System.out.println("x=" + x + "y=" + y + "y/x=" + (y/x));
System.out.println("y=" + y + "z[y]=" + z[y]);
}
catch(ArithmeticException exc1){
//分步捕获算术运算异常信息
System.out.println("算术运算异常:" + exc1.getMessage());
}
catch(ArrayIndexOutOfBoundsException exc2){
System.out.println("数组越界异常:" + exc2.getMessage());
} }
} 2、 finally
如果把finally块置try...catch...语句后, finally块⼀般都会得到执⾏,它相当于⼀个
万能的保险,即使前⾯的try块发⽣异常,⽽⼜没有对应异常的catch块, finally块将⻢上
执⾏。
以下情形, finally块将不会被执⾏:
1、 finally块中发⽣了异常;
2、程序所在的线程死亡;
3、在前⾯的代码中⽤了System.exit();
4、关闭CPU
/*
栗子 finally */ import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.net.Socket; public class test_fanxing {
public static void main(String[] args) {
FileReader fr = null;
//检查异常
//1. 打开不存在的文件
try{
//fr = new FileReader("D:\\aa.txt");
//System.exit(-1);//使用System.exit()后finally语句块不再执行
Socket s = new Socket("192.168.956.1",21);
}
/* catch (FileNotFoundException e){
System.out.println("文件不存在:" + e.getMessage());//getMessage()不如printStackTrace()
//e.printStackTrace();//输出bug 信息
}*/ catch(IOException e2){
e2.printStackTrace();
}
finally {
//try.catch...语句块中不管出没出现异常,一般都会执行finally语句块
//一般说,把需要关闭的资源。如【文件】、【链接】、【内存】....
System.out.println("测试进入finally语句块");
if(fr!=null){
try{
fr.close();
}
catch (Exception e){
e.printStackTrace();
}
}
} System.out.println("OK1"); }
}
/*
【结果】
文件不存在:D:\aa.txt (系统找不到指定的文件。)
测试进入finally语句块
OK1
2.如果把第一个catch注释掉
【结果】
java.net.UnknownHostException: 192.168.956.1
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:208)
at test_fanxing.main(test_fanxing.java:23)
测试进入finally语句块
OK1 */
import java.io.FileReader; /*
栗子 异常处理 将异常抛给调用者,让调用者处理 */
class Son{
public void test2() throws Exception{
FileReader fr = null;
fr = new FileReader("D:\\aaa.txt");
}
}
class Father{
private Son son = null;
public Father(){
son = new Son();
}
public void test1(){
System.out.println("1");
try{
son.test2();
}catch (Exception e){
System.out.println("Father在处理Son的异常");
e.printStackTrace(); }
} }
public class test_fanxing {
public static void main(String[] args) {
Father father = new Father();
father.test1();
}
}
/*
【结果】
1
Father在处理Son的异常
java.io.FileNotFoundException: D:\aaa.txt (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at java.io.FileReader.<init>(FileReader.java:58)
at Son.test2(test_fanxing.java:10)
at Father.test1(test_fanxing.java:21)
at test_fanxing.main(test_fanxing.java:33) */ 异常处理
3、多个异常的处理规则
定义多个catch可精确地定位异常。 如果为⼦类的异常定义了特殊的catch块,⽽⽗类的
异常则放在另外⼀个catch块中,此时,必需满⾜以下规则:
⼦类异常的处理块必需在⽗类异常处理块的前⾯,否则会发⽣编译错误。所以越特殊的
异常越在前⾯处理,越普通的异常越在后⾯处理。这类似于制订防⽕墙的规则次序: 较特
殊的规则在前,较普通的规则在后
对异常的处理,有⼀条⾏之有效的默认规则:向上抛出----被调⽤类在运⾏过程中对遇
到的异常⼀概不作处理,⽽是直接向上抛出,⼀直到最上层的调⽤类,调⽤类根据应⽤系
统的需求和特定的异常处理规则进⾏处理,如向控制台输出异常堆栈信息,打印在⽇志⽂
件中。⽤⼀句形象的话来说,就是谁使⽤,谁(最上层的调⽤类)处理
import org.omg.PortableInterceptor.SYSTEM_EXCEPTION; import java.io.FileReader;
import java.util.ArrayList;
import java.util.Scanner; /*
栗子 1. 跳水比赛,8个评委,运动员的成绩是8个成绩去掉一个最高分,去掉一个最低分,剩下的6个分数的平均分就是
最后得分。使用一维数组实现
2. 请把打最高分的评委和最低分的评委打出来
3. 用ArrayList写
*/
//裁判信息类
class Dive{
private String name;
private float fraction;
public Dive(String name,float fraction){
this.name = name;
this.fraction = fraction;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public float getFraction() {
return fraction;
} public void setFraction(float fraction) {
this.fraction = fraction;
}
}
//裁判类
class Referee{
private ArrayList<Dive> al = null;
public Referee(){
al = new ArrayList<Dive>();
}
//加入裁判
public void addDive(Dive dive){
al.add(dive);
}
//查看选手得分
public void View(){
float allnum=0f,pjnum=0f;
//遍历
for(int i=0;i<al.size();i++){
for(int j=1;j<al.size()-i;j++){
Dive dive1 = al.get(j-1);
Dive dive2 = al.get(j);
if(dive1.getFraction()<dive2.getFraction()){
al.set(j,dive1);
al.set(j-1,dive2);
}
}
}
//去掉最高分和最低分,得出选手得分
for(int i=1;i<al.size()-1;i++){
Dive dive = al.get(i);
allnum = dive.getFraction()+allnum;
}
pjnum = allnum/(al.size()-2);
System.out.println("跳水选手得分为: " + pjnum);
} //找出最高分和最低分
public void Cal(){
for(int i = 0;i<al.size()-1;i++){
for(int j=1;j<al.size()-i;j++){
Dive dive1 = al.get(j-1);
Dive dive2 = al.get(j);
if(dive1.getFraction()<dive2.getFraction()){
al.set(j,dive1);
al.set(j-1,dive2);
}
}
}
//找出最高分与最低分
for(int i=0;i<al.size();i++){
if(i == 0){
Dive dive = al.get(i);
System.out.println("打分最高的裁判是: " + dive.getName() + "\t分数是: " + dive.getFraction());
}else if(i == al.size()-1){
Dive dive = al.get(i);
System.out.println("打分最低的裁判是: " + dive.getName() + "\t分数是: " + dive.getFraction()); }
}
}
} public class test_fanxing {
public static void main(String[] args) {
Referee rf = new Referee();
try{
while(true){
System.out.println("跳水评分系统");
System.out.println("1. 裁判打分");
System.out.println("2. 查看得分");
System.out.println("3. 查看最高分和最低分");
System.out.println("0. 退出");
Scanner sr = new Scanner(System.in);
int num = sr.nextInt();
//裁判打分
if(num == 1){
System.out.print("请输入裁判人数:");
int j = sr.nextInt();
for(int i=0;i<j;i++){
System.out.print("请输入人第" + (i+1) + "位裁判名字:");
String name = sr.next();
System.out.print("裁判请输入评分:");
float fraction = sr.nextFloat();
Dive dive = new Dive(name,fraction);
rf.addDive(dive);
System.out.println("第" + (i+1) + "位裁判:" + name + "打分为:" + fraction);
}
}
//查看得分
else if(num == 2){
rf.View();
}
//查看最高分和最低分
else if(num == 3){
rf.Cal();
}
//退出系统
else if(num == 0){
System.out.println("已正常退出系统");
System.exit(0);
}
} }catch(Exception e){
e.printStackTrace();
} }
}
/*
【结果】
跳水评分系统
1. 裁判打分
2. 查看得分
3. 查看最高分和最低分
0. 退出
2
跳水选手得分为: -0.0
跳水评分系统
1. 裁判打分
2. 查看得分
3. 查看最高分和最低分
0. 退出
1
请输入裁判人数:4
请输入人第1位裁判名字:q
裁判请输入评分:100
第1位裁判:q打分为:100.0
请输入人第2位裁判名字:w
裁判请输入评分:200
第2位裁判:w打分为:200.0
请输入人第3位裁判名字:e
裁判请输入评分:300
第3位裁判:e打分为:300.0
请输入人第4位裁判名字:r
裁判请输入评分:400
第4位裁判:r打分为:400.0
跳水评分系统
1. 裁判打分
2. 查看得分
3. 查看最高分和最低分
0. 退出
2
跳水选手得分为: 250.0
跳水评分系统
1. 裁判打分
2. 查看得分
3. 查看最高分和最低分
0. 退出
3
打分最高的裁判是: r 分数是: 400.0
打分最低的裁判是: q 分数是: 100.0
跳水评分系统
1. 裁判打分
2. 查看得分
3. 查看最高分和最低分
0. 退出
0
已正常退出系统 */
/*
栗子 1. 跳水比赛,8个评委,运动员的成绩是8个成绩去掉一个最高分,去掉一个最低分,剩下的6个分数的平均分就是
最后得分。使用一维数组实现
2. 请把打最高分的评委和最低分的评委打出来
3. 用一维数组写
*/ import java.util.Scanner; class Judge{
float fens[] = null;
int size = 8;
public Judge(){
fens = new float[size];
Scanner sr = new Scanner(System.in);
try{
for(int i=0;i<fens.length;i++){
System.out.println("请输入第" + (i+1) + "位裁判的成绩:");
fens[i] = sr.nextFloat();
}
}
catch (Exception e){
System.out.println("输入人的不是float类型!");
e.printStackTrace();
}
finally{
try{
sr.close();
}catch (Exception e2){
e2.printStackTrace();
}
}
} //1. 去掉最低分(目的是找到最得分的下标)
public int getminFenIndex(){
//选择法
//认为第一个是最低分
float minFen = fens[0];
int minIndex = 0;
for(int i=1;i<fens.length;i++){
if(minFen>fens[i]){
minFen = fens[i];
minIndex=i;
}
}
return minIndex;
}
//2.去掉最高分(目的是找出最高分的下标)
public int getMaxFenIndex(){
//选择法
//认为第一个是最高分
float maxFen = fens[0];
int maxIndex = 0;
for(int i=1;i<fens.length;i++){
if(maxFen<fens[i]){
maxFen = fens[i];
maxIndex = i; }
}
return maxIndex;
}
//得到最后的评分
public float lastFen(){
//3. 得到最后分数
float allFen = 0;
int minIndex = this.getminFenIndex();
int maxIndex = this.getMaxFenIndex();
for(int i = 0;i<fens.length;i++){
if(i!=minIndex && i!=maxIndex){
allFen += fens[i];
}
}
return allFen/(fens.length-2); }
}
public class test_fanxing {
public static void main(String[] args) {
Judge judge = new Judge();
System.out.println("得分: " + judge.lastFen()); }
}
/*
【结果】
请输入第1位裁判的成绩:
100
请输入第2位裁判的成绩:
200
请输入第3位裁判的成绩:
300
请输入第4位裁判的成绩:
400
请输入第5位裁判的成绩:
500
请输入第6位裁判的成绩:
600
请输入第7位裁判的成绩:
700
请输入第8位裁判的成绩:
800
得分: 450.0 */
import org.omg.PortableInterceptor.SYSTEM_EXCEPTION; import java.util.ArrayList;
import java.util.Scanner; /*
栗子 实现一个简单学生成绩管理系统
定义一个数组,用户输入人10个同学的成绩,数组下标即代表学生学号
要求:
1. 输入学号,打印学生成绩
2. 输入成绩,打印学生学号
3. 统计各个分数截断学生人数(不及格,差,中,良,优)
4.输入学号,实现删除学生成绩功能 */
class Student{
private float Score;
public Student(float Score){
this.Score = Score;
}
public float getScore(){
return Score;
}
public void setScore(float score){
Score = score;
} } class Result{
Scanner sr = new Scanner(System.in);
private ArrayList<Student> al = null;
public Result(){
al = new ArrayList<Student>();
}
//加入成绩
public void addResult(Student student){
al.add(student);
}
//输入学号,打印学生成绩
public void ld(){
System.out.println("请输入查询学号进行查询:");
int id = sr.nextInt();
for(int i=0;i<al.size();i++){
if(id == i){
Student st = al.get(i-1);
System.out.println("学号为:" + id + "成绩是:" + st.getScore()); }
}
}
//输入成绩,打印学号
public void Score(){
System.out.println("请输入成绩进行查询:");
float Score = sr.nextFloat();
for(int i=0;i<al.size();i++){
if(Score==al.get(i).getScore()){
System.out.println("成绩是:" + Score + "得此成绩的学号为:" + (i+1));
}
}
} //统计各个分数截断人数
public void Count(){
int a=0,b=0,c=0,d=0,e=0,f=0;
for(int i=0;i<al.size();i++){
if(al.get(i).getScore() <= 100f && al.get(i).getScore() >= 90f){
a++;
}
else if(al.get(i).getScore()<90f && al.get(i).getScore()>=80f){
b++;
}
else if(al.get(i).getScore()<80f && al.get(i).getScore()>=70f){
c++;
}
else if(al.get(i).getScore()<70f && al.get(i).getScore()>=60){
d++;
}
else if(al.get(i).getScore()<60 && al.get(i).getScore()>0){
e++;
}
else if(al.get(i).getScore() == 0){
f++;
}
}
System.out.println("成绩优有: " + a + "人");
System.out.println("成绩良有: " + b + "人");
System.out.println("成绩中有: " + c + "人");
System.out.println("成绩差有: " + d + "人");
System.out.println("成绩不及格有: " + e + "人");
System.out.println("无成绩有: " + f + "人");
} //通过学号删除成绩
public void Del(){
System.out.println("请输入要删除成绩的学号:");
int id = sr.nextInt();
id = id - 1;
for(int i =0;i<al.size();i++){
if(id == i){
al.set(i,null);
System.out.println("学号是:" + (id+1) + "的成绩已清除");
}
}
} } public class test_fanxing {
public static void main(String[] args) {
Result rs = new Result();
while(true){
System.out.println("学生成绩管理系统");
System.out.println("1. 录入学生成绩");
System.out.println("2. 通过学号查成绩");
System.out.println("3. 通过成绩查学号");
System.out.println("4. 统计成绩分类人数");
System.out.println("5. 通过学号删除成绩");
System.out.println("0. 退出系统");
System.out.println("请选择操作:");
Scanner sr = new Scanner(System.in);
int num = sr.nextInt();
if(num == 1){
System.out.println("需要录入多少学生成绩: ");
int j = sr.nextInt();
for(int i = 0;i<j;i++){
System.out.print("请输入第" + (i+1) + "位学生的成绩:");
float Score = sr.nextFloat();
Student student = new Student(Score);
rs.addResult(student);
}
}else if(num == 2){
rs.ld();
}else if(num == 3){
rs.Score();
}else if(num == 4){
rs.Count();
}else if(num == 5){
rs.Del();
}else if(num == 0){
System.out.println("退出系统");
System.exit(0);
} } }
}
/*
【结果】
学生成绩管理系统
1. 录入学生成绩
2. 通过学号查成绩
3. 通过成绩查学号
4. 统计成绩分类人数
5. 通过学号删除成绩
0. 退出系统
请选择操作:
1
需要录入多少学生成绩:
2
请输入第1位学生的成绩:100
请输入第2位学生的成绩:50
学生成绩管理系统
1. 录入学生成绩
2. 通过学号查成绩
3. 通过成绩查学号
4. 统计成绩分类人数
5. 通过学号删除成绩
0. 退出系统
请选择操作:
1
需要录入多少学生成绩:
4
请输入第1位学生的成绩:70
请输入第2位学生的成绩:80
请输入第3位学生的成绩:90
请输入第4位学生的成绩:60
学生成绩管理系统
1. 录入学生成绩
2. 通过学号查成绩
3. 通过成绩查学号
4. 统计成绩分类人数
5. 通过学号删除成绩
0. 退出系统
请选择操作:
1
需要录入多少学生成绩:
1
请输入第1位学生的成绩:0
学生成绩管理系统
1. 录入学生成绩
2. 通过学号查成绩
3. 通过成绩查学号
4. 统计成绩分类人数
5. 通过学号删除成绩
0. 退出系统
请选择操作:
2
请输入查询学号进行查询:
1
学号为:1成绩是:100.0
学生成绩管理系统
1. 录入学生成绩
2. 通过学号查成绩
3. 通过成绩查学号
4. 统计成绩分类人数
5. 通过学号删除成绩
0. 退出系统
请选择操作:
3
请输入成绩进行查询:
50
成绩是:50.0得此成绩的学号为:2
学生成绩管理系统
1. 录入学生成绩
2. 通过学号查成绩
3. 通过成绩查学号
4. 统计成绩分类人数
5. 通过学号删除成绩
0. 退出系统
请选择操作:
4
成绩优有: 2人
成绩良有: 1人
成绩中有: 1人
成绩差有: 1人
成绩不及格有: 1人
无成绩有: 1人
学生成绩管理系统
1. 录入学生成绩
2. 通过学号查成绩
3. 通过成绩查学号
4. 统计成绩分类人数
5. 通过学号删除成绩
0. 退出系统
请选择操作:
0
退出系统 */
import java.util.Scanner; /*
栗子 实现一个简单学生成绩管理系统
定义一个数组,用户输入人10个同学的成绩,数组下标即代表学生学号
要求:
1. 输入学号,打印学生成绩
2. 输入成绩,打印学生学号
3. 统计各个分数截断学生人数(不及格,差,中,良,优)
4.输入学号,实现删除学生成绩功能 */ class Student{
Scanner sr = new Scanner(System.in);
float arr[] = null;
int size = 10;
public Student(){
arr = new float[size];
for(int i=0;i<arr.length;i++){
System.out.println("输入第" + (i+1) + "个学生的成绩:");
arr[i] = sr.nextFloat();
}
}
//输入学号查询成绩
public void studentNo(){
System.out.println("请输入学号:");
int No = sr.nextInt();
System.out.println("学号为" + No + "的学生成绩shi: " + arr[No-1]);
}
//通过成绩差学号
public void studentScore(){
System.out.println("请输入学生成绩: ");
float Score = sr.nextFloat();
for(int i=0;i<arr.length;i++){
if(Score == arr[i]){
System.out.println("学生成绩为:" + Score + "的学号为: " + (i+1));
}
}
} //统计各个分数阶段的人数
public void People(){
int a=0,b=0,c=0,d=0,e=0,f=0;
for(int i = 0;i<arr.length;i++){
if(arr[i]==100f&&arr[i]>=90f){
a++;
}else if(arr[i]<90f&&arr[i]>=80f){
b++;
}else if(arr[i]<80f&&arr[i]>=70f){
c++;
}else if(arr[i]<70f&&arr[i]>=60f){
d++;
}else if(arr[i]<60f&&arr[i]>0){
e++;
}else if(arr[i]==0){
f++;
}}
System.out.println("成绩优有: "+a+"⼈");
System.out.println("成绩良有: "+b+"⼈");
System.out.println("成绩中有: "+c+"⼈");
System.out.println("成绩差有: "+d+"⼈");
System.out.println("不及格有: "+e+"⼈");
System.out.println("⽆成绩有: "+f+"⼈");
} //删除学生成绩
public void Del(){
System.out.println("请输入要删除成绩的学号: ");
int No = sr.nextInt();
System.out.println("学号为" + No + "的学生原成绩为:" + arr[No]);
System.out.println("学号为" + No + "的学生成绩已请" + (arr[No]=0));
} }
public class test_fanxing {
public static void main(String[] args) {
Student rs = new Student();
while(true){
System.out.println("学生成绩管理系统");
System.out.println("1. 通过学号查成绩");
System.out.println("2. 通过成绩查学号");
System.out.println("3. 统计成绩分类人数");
System.out.println("4. 通过学号删除成绩");
System.out.println("0. 退出系统");
System.out.println("请选择操作:");
Scanner sr = new Scanner(System.in);
int num = sr.nextInt();
if(num == 1){
rs.studentNo();
}else if(num == 2){
rs.studentScore();
}else if(num == 3){
rs.People();
}else if(num == 4){
rs.Del();
}else if(num == 0){
System.out.println("退出系统");
System.exit(0);
} } }
}
【Java】【异常】的更多相关文章
- 浅谈java异常[Exception]
学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992 我们一起学Java! 一. 异常的定义 在<java编程思想 ...
- 基础知识《十》java 异常捕捉 ( try catch finally ) 你真的掌握了吗?
本文转载自 java 异常捕捉 ( try catch finally ) 你真的掌握了吗? 前言:java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理 ...
- Java异常体系及分类
上图是基本的java异常体系结构. 主要分为2大类:Error和Exception 1.Error:描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象,一般是由虚拟 ...
- Java异常之自定义异常
哎呀,妈呀,又出异常了!俗话说:"代码虐我千百遍,我待代码如初恋". 小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常.Java异 ...
- 第11章 Java异常与异常处理
1.Java异常简介 1.什么是异常异常出现的时候代码会无法正常运行下去,会产生各种问题2.捕捉异常的作用提早发现异常,方便查找问题,并给出解决方法3.Java中的异常1.Java中所有不正常的类都是 ...
- java 异常
1.java异常 2.自定义抛出 3.运行时异常,程序有问题,让使用者可以改' ' 4.return 和 throw的区别 return 符合函数要求的值 throw 有问题的时候用它结束 ...
- 3.Java异常进阶
3.JAVA异常进阶 1.Run函数中抛出的异常 1.run函数不会抛出异常 2.run函数的异常会交给UncaughtExceptionhandler处理 3.默认的UncaughtExceptio ...
- 2.Java异常学习
1.Java异常的概念 异常的例子 1.除法就是一个需要捕获异常的例子,除数又可能是0 异常处理的基本流程如下 一旦发生异常,就使得程序不按照原来的流程继续的运行下去 a.程序抛出异常 try{ th ...
- java异常架构图 和几个面试题
1.java异常架构图 粉红色的是受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被 ...
- 黑马----JAVA异常
黑马程序员:Java培训.Android培训.iOS培训..Net培训 黑马程序员--JAVA异常 一.JAVA异常有三种语句块:try语句块.catch语句块.finally语句块. 1.try语句 ...
随机推荐
- usb通信小结
2010-07-25 16:52:00 目前了解了usb通信层面的一些基础知识如下.如果有空还要再了解hid报告描述符及协议的数据包波形. 一,USB的一些基本概念 1. 管道(Pipe) 是主机和设 ...
- AJAX异步请求,局部刷新
AJAX异步请求,局部刷新 window.onload=function(){ //dom事件,页面加载完成执行如下函数 doGetObjects(); } function doGetObjects ...
- 2019/3/26 wen 数组
- NOSQL中的redis缓存数据库
NOSQL概述 什么是NOSQL? NoSql(NoSQL=Not Only SQL),意思为"不仅仅是SQL",是一个全新的数据库理念,泛指非关系型的数据库. 为什么需要NOSQ ...
- Docker学习笔记之docker volume 容器卷的那些事(二)
预览目录 更改目录拥有者 Data Container 切换用户 参考文章 0x00 概述 如果你读了docker volume 容器卷的那些事(一),我想应该不会遇到下面这些问题的,毕竟是具有指导意 ...
- Golang通过git clone beego框架报错 error: while accessing https://github.com/astaxie/beego/info/refs fatal: HTTP request failed package github.com/astaxie/beego: exit status 128
在Centos6.4尝试搭建beego框架,使用git命令clone时报错 # cd .; git clone https://github.com/astaxie/beego /www/projec ...
- yield表达式形式
首先了解 1.iterator iterator叫做迭代器,用来遍历可以序列化的数据,比如一个list,set 等,当然如果对象想要能够使用迭代器来遍历,只要在该对象的类中添加__iter__()方法 ...
- CentOS ping: unknown host 解决方法
如果ping命令返回如下错误,那主要的可能性就是系统的DNS设置有误 [root@CentOS5 ~]# ping www.sina.com.cn ping: unknown host www.sin ...
- ldap集成grafana
grafana版本: 5.0.3 grafana通过k8s方式安装,所以需将配置文件挂载过去. cat grafana-configmap.yaml apiVersion: v1 kind: Conf ...
- update与select关联执行效率问题
UPDATE fl_user_space u SET u.`course_count` = (SELECT COUNT(*) FROM fl_course c WHERE c.uid = u.uid) ...