Категории: Все - seguro - excepción - número - operador

по david zamudio 4 лет назад

517

capturar datos kotlin

capturar datos kotlin

capturar datos kotlin

6) Para los amantes del NullPointerException con el operador !!, un verdadero NPE directo: 1) Operador de aserción !! + función .toIntOrNull() = un verdadero NullPointerException: package ingresando.datos fun main(arg: Array) { var num: Int print("Ingrese un numero: ") num = readLine()!!.toIntOrNull()!! println(num) }

2) Operador ?. + operador !! + función .toIntOrNull() = de null a NullPointerException a un solo !!: package ingresando.datos fun main(arg: Array) { var num: Int? print("Ingrese un numero: ") num = readLine()?.toIntOrNull()!! println(num) }

4) Con el operador !!, complaciendo a los amantes del NullPointerException: 1) Sin el operador as + expresión try {…} catch {…} + throw = un placer inducido para los NPE’s Lovers: package ingresando.datos fun main(arg: Array) { var num: Int print("Ingrese un numero: ") num = try { readLine()!!.toInt() } catch (_: NumberFormatException) { throw NullPointerException("NullPointerException: " + "no se puede conververtir una referencia null en tipo Int") } println(num) }

2) Con el operador as + expresión try {…} catch {…} + null explícito = un placer aún más natural NPE’s Lovers: package ingresando.datos fun main(arg: Array) { var num: Int? print("Ingrese un numero: ") num = try { readLine()!!.toInt() } catch (_: NumberFormatException) { null } num!! println(num) }

2. Manejando correctamente el NumberFormatException, lectura con el operador ?. de forma segura: 1) Con el operador as + expresión try {…} catch() {…} = sin null de forma segura: package ingresando.datos fun main(arg: Array) { var num: Int print("Ingrese un numero: ") num = try { readLine()?.toInt() as Int } catch (_: NumberFormatException) { 0 } println(num) } la variable num con una sentencia if(). if (num != 0) { println("El numero ingresado es: $num") } else { println("Error: numero no valido!") }

2) Sin el operador as + expresión try {…} catch() {…} = un null de forma segura: package ingresando.datos fun main(arg: Array) { var num: Int? print("Ingrese un numero: ") num = try { readLine()?.toInt() } catch (_: NumberFormatException) { null } } manejo con la sentencia if() o when() de la siguiente forma: if(num != null) { println("El numero ingresado es: $num") } else { println("Se ha asignado -$num- a la variable") }

5) Lectura realmente segura con el operador ?., produciendo un verdadero null en lugar de un NFE: 1) Función .toIntOrNull() + operador ?. = forma reducida, concisa y segura: package ingresando.datos fun main(arg: Array) { var num: Int? print("Ingrese un numero: ") num = readLine()?.toIntOrNull() println(num) }

Manejando la excepción TypeCastException con la expresión try {…} catch() {..}: package ingresando.datos fun main(arg: Array) { var num: Int print("Ingrese un numero: ") num = try { readLine()?.toIntOrNull() as Int } catch (_: TypeCastException) { 0 } println(num) }
2) Con el operador as + operador ?. = una excepción TypeCastException que se escapa: package ingresando.datos fun main(arg: Array) { var num: Int print("Ingrese un numero: ") num = readLine()?.toIntOrNull() as Int println(num) }

3) Para los amantes del NullPointerException con el operador !!, casi, casi: 1) Con o sin operador as, expectativa vs realidad: package ingresando.datos fun main(arg: Array) { var num: Int print("Ingrese un numero: ") num = readLine()!!.toInt() println(num) }

1)Lectura de datos de formas«casi» seguras con el operador ?., levantando una excepción NumberFormatException: 1) Con el operador as: package ingresando.datos fun main(arg: Array) { var num: Int print("Ingrese un numero: ") num = readLine()?.toInt() as Int println(num) }

2) sin el operador as package ingresando.datos fun main(arg: Array) { var num: Int? print("Ingrese un numero: ") num = readLine()?.toInt() println(num) }