-2
votes

Forcer Java pour faire une erreur de compilation avec l'entrée utilisateur en tant que message

Je ne sais pas si cela est possible en Java ou non; Je souhaite obtenir une entrée de l'utilisateur (à partir du système.in), puis lancer une erreur de compilée avec cette entrée. Je veux dire que si l'utilisateur entrait le texte "Hello", le programme doit lancer une erreur de compilation: Compiler erreur: Bonjour. Je souhaite une erreur qui rend le programme arrêter d'exécuter à ce stade avec ce message.

est-ce possible? Si oui, comment? P>

En fait, je veux faire une erreur de compilée pendant l'exécution! P>

Le code sera comme celui-ci: P>

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
String str = in.nextLine();

//compileError(str); this part must be completed


    }
}


8 commentaires

Vous voulez dire une erreur de temps d'exécution (exceptions)? ... en tant que compilateur génère une erreur sur la syntaxe


Voulez-vous écrire votre propre compilateur?


Non, je pense que c'est vraiment impossible, mais je n'étais pas sûr. Je souhaite une erreur exacte de la compilation non des erreurs d'exécution ou une exception.


Vouloir quelque chose qui est impossible à obtenir conduira à la frustration et rien d'autre. Peut-être que votre question est une XY Problème déguisé et vous devriez nous dire la motivation derrière votre question et non la manière impossible que vous 'Essayez de l'atteindre.


@Aquestion pense que vous avez un programme que vous ne savez pas ce que cela devrait faire et qu'il passe quelques tests sur un juge en ligne. Vous savez ce que l'entrée pourrait être mais ne sait pas dans quel ordre ils viennent et que vous devriez obtenir les cas de test sans accéder réellement aux cas de test du juge en ligne. Je veux faire mon programme me donner des erreurs pour savoir ce qui est dans chaque cas de test.


@ Hovercaffulleels voient mon commentaire ci-dessus. Je veux obtenir des cas de test de juge en ligne qui n'est pas accessible. Mais j'ai un programme qui transmet tous les cas de test. Je ne suis même pas sûr de la question de la question. J'ai juste un programme de travail et je veux extraire les commentaires du juge en ligne. Le but est que si je fais des erreurs de compilation, le juge en ligne dira quelle erreur j'ai faite mais cela ne dit rien des erreurs de temps d'exécution.


Créez simplement une exception nommée CompileError et jetez-la: P


Vous ne pouvez pas causer d'erreur dans le temps de compilation par une entrée future!


4 Réponses :


1
votes

Vous ne pouvez pas lancer une erreur de compilation lorsque votre code est exécuté. Je pense que vous voulez dire une erreur d'exécution qui cadrer votre code échoue au moment de l'exécution.

Essayez quelque chose comme ceci: xxx

Vous pouvez aussi attraper cette "erreur" si vous entourez votre code avec les clauses try / attraper. xxx

runTimeException est l'exception la plus générale des erreurs au moment de l'exécution, vous pouvez utiliser d'autres exceptions, Liste des exceptions .


0 commentaires

3
votes

Ce que vous faites référence est exceptions pas une erreur de compilation. L'erreur de compilation est quand il y a quelque chose qui ne va pas dans la syntaxe de votre code et que le compilateur Java ne parvient pas à générer du code octet de votre programme pour l'exécution de JVM. Donc, cela arrive avant de pouvoir exécuter le programme.

Vous pouvez donc utiliser une instance d'un RunTimeException ou de toute sous-classe de celui-ci dans Java pour terminer votre programme lorsque "Bonjour" est utilisé comme entrée, ici dans mon code d'exemple INPUTMISMAtCHException est lancé si l'entrée est "bonjour" , cette exception étant une catégorie de RunTimeException < / code> ou non cochéra exception ne nécessite pas le programmateur d'ajouter un clause ou la gère explicitement: xxx


0 commentaires

1
votes

Vous pouvez rendre votre programme arrêter d'exécuter à ce stade. Par exemple: xxx

Une autre façon de le faire est de lancer une exception ... Sauf que vous obtiendrez une exception StackTrace ainsi qu'un message. Dans le contexte, vous faites cela, cela n'a probablement pas d'importance.

Notez qu'il existe des problèmes potentiels avec ceci:

  1. Si le juge intercepte toute sortie, il peut ne pas être possible de saisir les messages que votre application produit.

  2. Le juge peut nourrir votre application Différentes entrées chaque fois qu'elle le juge.


    Cependant, ce n'est pas une vraie erreur de compilation. En effet, Cela n'a pas de sens pour que votre programme génère une réelle erreur de compilation.

    Les erreurs compilent se produisent lorsque le code est compilé et qu'ils sont émis par le compilateur. Mais une application Java ne peut pas lire l'entrée (de l'utilisateur ou du «juge») à l'heure de la compilation. Il peut lire l'entrée au moment de l'exécution ... mais il est alors trop tard pour une erreur de compilation.

    Vous semblez avoir votre terminologie confondue. Je vous suggère de lire ces articles pour comprendre ce que signifient les différents termes:

    • Erreur de compilation ou erreur de compilateur - https://fr.wikipedia.org/wiki/compilation_error " a>
    • Erreur d'exécution - https://techterms.com/definition/Runtime_Error
    • Exception - https://techterms.com/definition/Exception

      Votre commenté ainsi:

      Pensez que vous avez un programme que vous ne savez pas ce que cela devrait faire et qu'il passe quelques tests sur un juge en ligne. Vous savez ce que l'entrée pourrait être mais ne sait pas dans quel ordre ils viennent et que vous devriez obtenir les cas de test sans accéder réellement aux cas de test du juge en ligne. Je veux faire mon programme me donner des erreurs pour savoir ce qui est dans chaque cas de test.

      et

      J'ai juste un programme de travail et je veux extraire les commentaires du juge en ligne.

      Ce n'est pas une erreur de compilation dont vous parlez. C'est une erreur d'exécution, car vous voulez / besoin que cela se produise lorsque votre programme est exécuté. Veuillez vous reporter aux liens ci-dessus pour des explications de ces termes.


0 commentaires

1
votes

Si votre intention est d'imprimer un message et de quitter le programme, vous pouvez faire quelque chose comme suit xxx pré>

alternativement, vous pouvez toujours lancer un objet d'exception (ou un objet d'une classe dérivé de celui-ci) et ne l'attrapez pas n'importe où dans votre programme lors de ses bulles, le programme se terminera. P>

/* add throws Exception in your main method */
throw new Exception("Your input has resulted in an error, program will terminate")


0 commentaires