verificadas todas tipos propagacion paquetes mas manejo las excepciones ejemplos conclusion comunes java exception math divide-by-zero

todas - ¿Cómo debo lanzar una excepción de división por cero en Java sin dividir realmente por cero?



tipos de excepciones en java netbeans (5)

Algo como:

if(divisor == 0) { throw new ArithmeticException("Division by zero!"); }

Tengo un dispositivo I2C que quiere dos entradas: un denominador y un numerador. Ambos se escriben en direcciones separadas, por lo que no se realiza ningún cálculo real ( numerator/denominator ). El problema con esto es que podría ocurrir una división por cero en el dispositivo I2C, por lo que es necesario verificar un error de división por cero. Lo ideal sería que sucediera exactamente lo mismo si la división fuera realizada por el código java.

En este momento, he dañado una variable no utilizada que hace la división, pero me preocupa que se optimice:

public void setKp(int numerator, int divisor) { int zeroCheck = numerator / divisor; //... doesn''t use zeroCheck }

Seguramente hay una mejor manera!


Hacer esto:

if (denominator == 0) throw new ArithmeticException("denominator == 0");

ArithmeticException es la excepción que normalmente se produce cuando se divide por 0.


Hay dos maneras de hacer esto. Cree su propia clase de excepción personalizada para representar un error de división por cero o lance el mismo tipo de excepción que generaría el tiempo de ejecución de Java en esta situación.

Definir excepción personalizada

public class DivideByZeroException() extends ArithmeticException { }

Luego, en su código, verificará una división por cero y lanzará esta excepción:

if (divisor == 0) throw new DivideByZeroException();

Lanzar la excepción aritmética

Agregue a su código la verificación de una división por cero y lance una excepción aritmética:

if (divisor == 0) throw new java.lang.ArithmeticException("/ by zero");

Además, podrías considerar lanzar una excepción de argumento ilegal ya que un divisor de cero es un argumento incorrecto para pasar a tu método setKp ():

if (divisor == 0) throw new java.lang.IllegalArgumentException("divisor == 0");


No debes lanzar una ArithmeticException. Dado que el error está en los argumentos proporcionados, lance una IllegalArgumentException . Como dice la documentation :

Se lanza para indicar que un método ha pasado un argumento ilegal o inapropiado.

Que es exactamente lo que está pasando aquí.

if (divisor == 0) { throw new IllegalArgumentException("Argument ''divisor'' is 0"); }


public class ZeroDivisionException extends ArithmeticException { // ... } if (denominator == 0) { throw new ZeroDivisionException(); }