кодесурса

Пользовательские исключения

script1adsense2code
script1adsense3code

Вступление

Мы говорили о том, как обрабатывать исключения, когда они создаются путем вызова методов в API Java. Java также позволяет создавать и использовать пользовательские исключения - классы ваших собственных исключений в соответствии с потребностями приложения, которые будут использоваться для представления ошибок. Обычно вы создаете пользовательское исключение, которое представляет некоторый тип ошибки в вашем приложении, чтобы придать новый, отдельный смысл одной или нескольким проблемам, которые могут возникнуть в вашем коде. Вы можете сделать это, чтобы показать сходство между ошибками, которые существуют в нескольких местах вашего кода, чтобы отличить одну или несколько ошибок от аналогичных проблем, которые могут возникнуть во время выполнения кода, или придать особое значение группе ошибок в вашем приложении.

Это довольно легко создать и использовать пользовательское исключение. Есть три основных шага, которым вы должны следовать. Мы объясним это на примере баланса банковского счета. Здесь мы хотим иметь функцию флекси-депозита, т.е. когда баланс счета превышает 20 КБ, будет создан новый депозит.

Определите класс исключения

Обычно вы представляете пользовательское исключение, определяя новый класс. Во многих случаях все, что вам нужно сделать, это создать подкласс существующего класса исключений:

Java-код:

public class AccountBalanceException extends Exception {
	private float accountBalance ;
	public AccountBalanceException(float f){		
		super();
		this.accountBalance =f;
	}
	public AccountBalanceException(String message){
		super(message);
	 }
	public float getAccountBalance(){
		return accountBalance;
	}
}

Как минимум, вам нужно создать подкласс Throwable или один из его подклассов. Часто вы также определяете один или несколько конструкторов для хранения информации, такой как сообщение об ошибке в объекте, как показано в строках 6-12. Наш класс исключений AccountBalanceException имеет два конструктора. Один с аргументом String, а второй конструктор имеет аргумент float. Когда вы создаете подкласс любого исключения, вы автоматически наследуете некоторые стандартные функции из класса Throwable, такие как:

  • Сообщение об ошибке
  • Трассировки стека
  • Исключение упаковки

Объявите, что ваш метод, создающий исключение, генерирует ваше пользовательское исключение

Используя ключевое слово throws, мы можем объявить метод, который может генерировать исключение. Чтобы использовать пользовательское исключение, вы должны показать классы, которые вызывают ваш код, которые им нужно спланировать для этого нового типа исключения. Вы делаете это, заявляя, что один или несколько ваших методов выдают исключение. Ниже приведен код для управления балансом счета. Класс AccountManagement имеет метод main () и два служебных метода addAmount () и createFixDeposit (). Здесь мы принимаем текущий баланс как рупий. 15000. Если баланс счета выходит за рамки рупий. 20000, сумма свыше 20 000 будет передана для внесения фиксированного депозита.

Java-код: перейти к редактору

import java.util.Scanner;
public class AccountManagement {
	private float currentBalance =15000f;
	public static void main(String[] args) {
		Scanner inputDevice = new Scanner(System.in);
		System.out.print("Please enter amount to add in your balance: ");
		float newAmount = inputDevice.nextFloat();
		try{
			float totalAmount = new AccountManagement().AddAmount(newAmount);
			System.out.println("Total Account Balance ="+ totalAmount);
		}catch (AccountBalanceException a){
			float fdAmount = a.getAccountBalance() - 20000 ;
			System.out.println("Your account balance is more than 20K now, So creating FD of Amount: "+ fdAmount);
			new AccountManagement().createFixDeposit(fdAmount);
			System.out.println("Account Balance ="+20000);
		}
	}
	public float AddAmount(float amount) throws AccountBalanceException{
		float total = currentBalance+amount;
		if (total>20000){
			throw new AccountBalanceException(total);
		}
		return total;
	}
	public void createFixDeposit(float fxAmount){
		//Implimentation of FD creation
	}	
}
class AccountBalanceException extends Exception {
	private float accountBalance ;
	public AccountBalanceException(float f){		
		super();
		this.accountBalance =f;
	}
	public AccountBalanceException(String message){
		super(message);
	 }
	public float getAccountBalance(){
		return accountBalance;
	}
}

Найдите причину (ы) сбоя в вашем методе создания ошибок, создайте исключение и отправьте его, используя ключевое слово throw

Третий и последний шаг - создать объект и распространить его через систему. Для этого вам нужно знать, где ваш код нуждается в специальной обработке в методе. Здесь Throwable Instance должен быть объектом типа Throwable или подклассом Throwable. Получить объект Throwable можно двумя способами: используя параметр в предложении catch или создав его с помощью оператора new. Поток выполнения останавливается сразу после оператора throw; любые последующие заявления не выполняются. Ближайший включающий блок try проверяется на наличие оператора catch, соответствующего типу исключения. Если он находит совпадение, управление передается этому утверждению. Если нет, то проверяется следующий включающий оператор try и т. Д.

Вывод вышеуказанной программы на основе различных входных параметров, как показано ниже,


Резюме:

  • Java предоставляет классы исключений для большинства распространенных типов ошибок, а также предоставляет механизм для определения пользовательских классов исключений.
  • Три шага для создания и использования настраиваемого класса исключений (1) Определение класса исключений (2) Объявление метода, склонного к исключениям, с помощью throws keyword (3) Проверьте условие для выброса нового объекта исключения, который будет обработан, путем вызова метода.

Редактор кода Java:

Предыдущая: Проверено и не проверено
Далее: попробуйте ресурсную функцию Java 7

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code