A veces necesitas escribir un constructor que puede fallar. Por ejemplo, digamos que quiero crear una instancia de un objeto con una ruta de archivo, algo así como
obj = new Object("/home/user/foo_file")
Mientras la ruta apunte a un archivo apropiado, todo estará bien. Pero si la cadena no es una ruta válida, las cosas deberían romperse. ¿Pero cómo?
Tú podrías:
- lanzar una excepción
- devolver objeto nulo (si su lenguaje de programación permite a los constructores devolver valores)
- devolver un objeto válido pero con un indicador que indica que su ruta no se configuró correctamente (ugh)
- ¿otros?
Supongo que las "mejores prácticas" de varios lenguajes de programación implementarían esto de manera diferente. Por ejemplo, creo que ObjC prefiere (2). Pero (2) sería imposible de implementar en C ++ donde los constructores deben tener vacío como tipo de retorno. En ese caso, supongo que se usa (1).
En el lenguaje de programación que elija, ¿puede mostrar cómo manejaría este problema y explicar por qué?
void
, devuelven un objeto.
new
llama operator new
para asignar la memoria, luego el constructor para llenarla. El constructor no devuelve nada y new
devuelve el puntero del que obtuvo operator new
. Sin embargo, si "no devuelve nada" implica "retornos void
" está en juego.