#3 Lanzar una excepción es hacer el throw.
Un try captura los throws.
Por lo tanto si tu función debe de lanzar una excepción, obviamente no debes capturarla dentro de la función.
La cosa está en que si yo llamo a la función esta vaya bien o me lance la excepción:
try {
tuFunción(argumento);
// Ha ido todo bien
}
catch (Error1) {
// Hago algo... o no
}
Lo de si se debe hacer un echo o un return es depende de lo que haga la función.
Un ejemplo:
int suma(int x, int y) { return x + y; }
Este código hace la suma de 2 números y retorna el resultado. Simplemente hace eso, me da el resultado de la suma. Si quiero mostrarlo por pantalla puedo hacer
escribir suma(1, 2)
Pero otra cosa que podría hacer es tener una función que ESCRIBE la sumad e 2 números:
void suma(int x, int y) { escribir x + y; }
suma(1, 2)
El resultado en ambos casos es el mismo, al ejecutar todo se escribe el resultado de la suma, peor en un caso tengo una función que me devuelve un numero, un cálculo, el resultado de la suma, y yo hago con el lo que quiera, y en el otro es una función que escribe el resultado de una suma.
¿Debes de hacer un echo o un return?
Depende de lo que haga tu función. Si es una función que te devuelve algo, pues hará un return, si es una función que escribe por pantalla pues hará el echo (y podría retornar algo, pero bueno).
Teniendo en cuenta que lanzas una excepción seguramente retornarás algo y después ya harás lo que te salga con ese algo (por ejemplo, hacerle un echo).
El código podría quedar algo como
try {
res = miFuncion(algo);
echo res
}
catch (Excepcion) {
echo "No se ha encontrado lo que buscas"
}
Parece que estás empezando. Yo empecé en la universidad con C++ (aunque con lo limitado que era, era igual que C) y también tenía la misma duda: ¿Hacer una función que retorne la suma o una que la escriba? En ambos casos el resultado es el mismo. Al final le vas pillando el truco. Irás viendo que no es buena idea (o no queda bonito) tener funciones que te hagan cálculos + los muestren.