Wikipedia:Reference desk/Archives/Computing/2022 January 24

Computing desk
< January 23 << Dec | January | Feb >> January 25 >
Welcome to the Wikipedia Computing Reference Desk Archives
The page you are currently viewing is a transcluded archive page. While you can leave answers for any questions shown below, please ask new questions on one of the current reference desk pages.


January 24

edit

Is this pseudocode the meaning of try-catch in programming languages in general?

edit
Try SOMETHING,
If you catch SOMETHING_ELSE (success) than continue,
If you didn't catch SOMETHING_ELSE (bug),
Either,
Do nothing || throw an exception (error)

Thanks, 79.176.222.75 (talk) 00:59, 24 January 2022 (UTC)[reply]

I'm having trouble understanding what you are meaning, but I think the answer is "almost, but not quite". The overall form of try-catch in languages like Java or C# is:
try
{
  /* This is the code we're trying to execute.
     If all goes well no exception is thrown and this code runs to completion. */
}
catch
{
  /* An exception happened in the above code and it didn't run to completion.
     Deal with the exception here. */
}
finally
{
  /* This code is always executed regardless of what happened above. */
}
Usually an exception being thrown is a sign of failure, not of success. Note that in the above code, if no exception is thrown, then the code in the catch block isn't executed at all. JIP | Talk 01:30, 24 January 2022 (UTC)[reply]
Thanks, from reading your reply I would pseudocode try-catch pattern as:
Try SOMETHING,
If you succeed 
Either
Do nothing || Do what's described in the catch block (which isn't throwing an exception)
If you fail
Either
Do nothing || Throw an exception (error)
If this is the correct pseudocode than I admit I misunderstand why do we need the terms "catch" and "throw"; I mean, "try" is intuitive but "catch" and "throw" aren't. 79.176.222.75 (talk) 01:50, 24 January 2022 (UTC)[reply]
That's still not quite right. The "If you fail" bit in your pseudocode above actually implies that an exception was thrown, there isn't need for additional code to throw an exception after that. Also, if "If you succeed" happens, the try block runs to completion, and the catch block isn't run at all. I'd rewrite your pseudocode as:
Try SOMETHING
If you succeed
  Do nothing
If you fail
  Do what's described in the catch block
Do what's described in the finally block anyway

JIP | Talk 02:30, 24 January 2022 (UTC)[reply]

Wow, for me this help is a grace !
I could sum up than that "Do what's described in the catch block" can be either an alternative to the success OR throwing an exception. 79.176.222.75 (talk) 02:57, 24 January 2022 (UTC)[reply]

Git question: Removing a file and merging branches

edit

I have a question about Git. Suppose I'm in branch A and I create a new branch B from it. There's a file called X in branch A which now also is in branch B.

I now switch back to branch A and remove file X from there. This does not affect branch B. Later, I switch back to branch B and make some edits to file X there.

Now when I switch back to branch A again and merge branch B to it, will the merge bring the file X back to branch A or does Git realise that since I removed the file from there, it really shouldn't be there? JIP | Talk 11:39, 24 January 2022 (UTC)[reply]

Git will behave as though you added a new file to the branch B. Since the file was deleted from the branch A, it would be treated as non-existent. Ruslik_Zero 20:28, 25 January 2022 (UTC)[reply]
So that means if I want the file to stay removed from branch A, I would have to remove it again? JIP | Talk 22:40, 25 January 2022 (UTC)[reply]
The result of the merge should be a "modify/delete" conflict, that you will need to resolve by selecting to either delete the file, keep the modified file, or perhaps some other result such as keeping only the modified line. Whatever the decision, the merge cannot continue to successful completion until the conflict is resolved. -- Tom N talk/contrib 00:52, 26 January 2022 (UTC)[reply]