Comment puis-je manuellement de retour ou de jeter une erreur de validation/exception dans Laravel?

Avoir une méthode qui est de l'importation de CSV des données dans une Base de données. Je fais un peu de base de validation à l'aide de

class CsvImportController extends Controller
{
    public function import(Request $request)
    {   
        $this->validate($request, [
            'csv_file' => 'required|mimes:csv,txt',
        ]);

Mais après que les choses peuvent aller mal pour des motifs plus complexes, plus bas dans le trou du lapin, qui lève des exceptions de quelque sorte. Je ne peux pas écrire de la bonne validation des trucs à utiliser avec le validate méthode ici, mais, j'aime vraiment comment Laravel œuvres lors de la validation échoue et combien il est facile d'intégrer les erreur(s) dans la lame de vue etc...

Est-il un (propre de préférence) pour manuellement dire Laravel que "je sais que je n'ai pas d'utiliser votre validate méthode dès maintenant, mais je voudrais vraiment vous exposer cette erreur ici, comme si je l'ai fait"? Est-il quelque chose que je peux revenir, une exception je peux envelopper les choses, ou quelque chose?

try
{
    //Call the rabbit hole of an import method
}
catch(\Exception $e)
{
    //Can I return/throw something that to Laravel looks 
    //like a validation error and acts accordingly here?
}
Ce sujet de l'extension de la validation de laravel pour ajouter votre traitement complexe comme yhis Validator::extend('foo', function ($attribute, $value, $parameters, $validator) { return $value == 'foo'; }); vous pouvez ensuite ajouter les foo règle dans les règles 'csv_file' => 'required|foo|mimes:csv,txt', ??
Avez-vous votre validation personnalisée classe de jeter sur la validation de l'erreur ?
C'est un projet de l'héritage (et je suis un Laravel newb), donc je ne sais pas vraiment ce que je dois ajouter à une classe de validation de la fonction/. Donc, je préfère juste attraper "tout ce qui va mal que trou de lapin" et prétend qu'il a été validé et a échoué, plutôt que d'essayer de trouver tout ce que en fait, peut-être vérifiés là-bas et de le tirer dans un type de validation de l'étape. Ma tâche est en fait de faire des erreurs plus joli maintenant, aussi un actuellement obtient juste une alerte javascript avec "oups, quelque chose s'est mal passé".
Je pense que madalinivascu la solution est votre réponse.
vous pouvez attraper le message d'erreur dans le bloc catch et faire de votre stuff. comme ce try { //my stuff } catch (Exception $ex) { echo $ex->getMessage(); //Message //$ex->getFile(); //File //$ex->getLine(); //Line }

OriginalL'auteur Svish | 2017-11-10