Task 16 — Исключения
Обработка исключений и безопасное выполнение кода.
Edit on GitHubЗадание
Обработка исключений и безопасное выполнение кода. Документация собрана по исходному коду этой практики.
Решение
Полный код решения по этой практике:
Исходные файлы решения
Task16/Exception1.javaTask16/Exception2.javaTask16/Exception3.javaTask16/Exception4.javaTask16/ThrowsDemo5.javaTask16/ThrowsDemo6.javaTask16/ThrowsDemo7.javaTask16/ThrowsDemo8.java
Task16/Exception1.java
package Task16;
public class Exception1 {
public static void exceptionDemo(){
System.out.println(2/0);
}
public static void exceptionDemo1(){
System.out.println(2.0/0.0);
}
public static void exceptionDemo2(){
try {
System.out.println(2/0);
}catch (ArithmeticException e){
System.out.println("Attempted division by zero");
}
}
public static void main(String[] args){
exceptionDemo1();
exceptionDemo2();
exceptionDemo();
}
}
Task16/Exception2.java
package Task16;
import java.util.Scanner;
public class Exception2 {
public static void exceptionDemo1(){
Scanner myScanner = new Scanner(System.in);
System.out.println("Enter an integer ");
String intString = myScanner.next();
int i = Integer.parseInt(intString);
System.out.println(2/i);
}
public static void exceptionDemo(){
try {
Scanner myScanner = new Scanner(System.in);
System.out.println("Enter an integer ");
String intString = myScanner.next();
int i = Integer.parseInt(intString);
System.out.println(2/i);
}catch (NumberFormatException e){
System.out.println("error");
}
}
public static void main(String[] args){
exceptionDemo();
exceptionDemo1();
}
}
Task16/Exception3.java
package Task16;
import java.util.Scanner;
public class Exception3 {
public static void exceptionDemo() {
try {
Scanner myScanner = new Scanner(System.in);
System.out.println("Enter an integer ");
String intString = myScanner.next();
int i = Integer.parseInt(intString);
System.out.println(2 / i);
} catch (Exception e) {
System.err.println("error");
}
}
public static void main(String[] args){
exceptionDemo();
}
}
Task16/Exception4.java
package Task16;
import java.util.Scanner;
public class Exception4 {
public static void exceptionDemo(){
try {
Scanner myScanner = new Scanner(System.in);
System.out.println("Enter an integer ");
String intString = myScanner.next();
int i = Integer.parseInt(intString);
System.out.println(2/i);
}catch (NumberFormatException e){
System.out.println("error");
}finally {
System.out.println("Проверка работы блока finally");
}
}
public static void main(String[] args){
exceptionDemo();
}
}
Task16/ThrowsDemo5.java
package Task16;
public class ThrowsDemo5 {
public static String getDetails1(String key){
if (key == null) {
throw new NullPointerException("null key in getDetails");
}
return key;
}
public static String getDetails(String key){
try {
if (key == null){
throw new NullPointerException("null key in getDetails");
}
}catch (NullPointerException e){}
return "data " + key;
}
public static void main(String[] args){
System.out.println(getDetails(null));
System.out.println(getDetails1(null));
}
}
Task16/ThrowsDemo6.java
package Task16;
public class ThrowsDemo6 {
public void printMessage(String key){
try {
String message = getDetails(key);
System.out.println(message);
}catch (Exception e){
}
System.out.println(key);
}
public String getDetails(String key){
if (key == null){
throw new NullPointerException("null key in getDetails");
}
return "data for " + key;
}
public static void main(String[] args){
ThrowsDemo6 n = new ThrowsDemo6();
n.printMessage("tol");
n.printMessage(null);
n.getDetails("kol");
n.getDetails(null);
}
}
Task16/ThrowsDemo7.java
package Task16;
import java.util.*;
public class ThrowsDemo7 {
public void getKey() throws Exception {
Scanner myScanner = new Scanner(System.in);
String key = myScanner.next();
printDetails(key);
}
public void printDetails(String key) throws Exception {
String message = getDetails(key);
System.out.println(message);
}
private String getDetails(String key) throws Exception {
if(Objects.equals(key, "!")){
throw new Exception("Key set to empty string");
}
return "data for " + key;
}
public static void main(String[] args) throws Exception {
ThrowsDemo7 n = new ThrowsDemo7();
n.getKey();
}
}
Task16/ThrowsDemo8.java
package Task16;
import java.util.Objects;
import java.util.Scanner;
public class ThrowsDemo8 {
public void getKey() {
boolean r = true;
while (r)
try {
Scanner myScanner = new Scanner(System.in);
String key = myScanner.next();
printDetails(key);
r = false;
}catch (Exception e){
r = true;
}
}
public void printDetails(String key) throws Exception {
String message = getDetails(key);
System.out.println(message);
}
private String getDetails(String key) throws Exception {
if(Objects.equals(key,"!")){
throw new Exception("Key set to empty string");
}
return "data for " + key;
}
public static void main(String[] args) {
ThrowsDemo8 n = new ThrowsDemo8();
n.getKey();
}
}
Описание
В этом модуле используется 8 Java-файлов. Ключевые сущности: Exception1, Exception2, Exception3, Exception4, ThrowsDemo5, ThrowsDemo6.
tip
Для проверки практики сначала запускайте тестовый/демо-класс из папки задачи, затем расширяйте модель новыми кейсами.
Вывод
Task 16 — Исключения документирует реальное решение из исходного кода.