This code errors on *this* and *that*, is it really written in them? Inspired by I'm not the language you're looking for!

Challenge

Choose two different programming languages, and write a program that prints the following line to stdout (or equivalent):

This program errors out in &lt;the current language&gt; :P


and then generates different kind of error in each of the two languages.

Rules

Some rules are taken from the original challenge.


In the output, language names should exactly follow:


The name listed on TIO, optionally excluding the version number and/or the implementation name (e.g. if you use JavaScript (Node.js) as one of your languages, you can use JavaScript for your language name, but not JS or Javascript.)
The full name on the official website (or GitHub repo) if your language of choice is not available on TIO.

Neither program should take any input from the user.
You may use comments in either language.
Two different versions of the same language count as different languages.


If this is done, the program should output the major version number, and if running on two different minor versions, should report the minor version also.
You should not use prebuilt version functions (this includes variables that have already been evaluated at runtime).

Two different command line flags in the same language also count as different languages as per this meta consensus, as long as the flags don't include code fragments (such as -Dblahblah... in C).


If this is done, the program should also output the flag used.

Two errors are considered different unless both errors are generated by the same semantics (such as "division by zero", "segmentation fault", or "index out of range").


If a language's runtime does not exit after an error, but reports the error in some way to the user, it's a valid error.
If a language does not discriminate the error messages but has a known list of reasons that cause error, you must specify the reason, not the error message.
An example is &gt;&lt;&gt;, which has only one error message something smells fishy..., but esolangs wiki page has a list of error reasons.

Syntax error is not allowed unless it is generated by calling eval() or similar.
Throwing something manually (via throw(JS), raise(Python), die(Perl) or similar) is allowed, but all of them are considered as one kind of error.
Error by invalid command in 2D or golflangs is also allowed (and treated as one kind of error).


Examples

Python and Ruby


Python: This program errors out in Python :P to stdout, then undefined identifier
Ruby: This program errors out in Ruby :P to stdout, then index out of bounds


C89 and C99


C89: This program errors out in C 89 :P to stdout, then division by zero
C99: This program errors out in C 99 :P to stdout, then segmentation fault


Note that the version number should always be separated from the language name by a space.

Python 2.7.9 and Python 2.7.10


Python 2.7.9: This program errors out in Python 2.7.9 :P to stdout, then syntax error on eval
Python 2.7.10: This program errors out in Python 2.7.10 :P to stdout, then key error on dict


Perl and Perl -n


Perl: This program errors out in Perl :P to stdout, then invalid time format
Perl -n: This program errors out in Perl -n :P to stdout, then try to open a file that doesn't exist


Winning condition

This is code-golf, so the shortest code in bytes wins. But you're always encouraged to post an answer that is fun or interesting even if it isn't very short.
Python 2 / Python 3, 60 bytes



print("This program errors out in Python %d :P"%(3/2*2))*1;a



Python 2 got NameError: name 'a' is not defined
Python 3 got unsupported operand type(s) for *: 'NoneType' and 'int'


Python 2:


/ is integer division, 3 / 2 got 1; int(3 / 2 * 2) is 2.
print is a statement, so the first statement read as print((...)*1), here *1 means repeating the string once.
second statement referenced a non-existing variable, which caused the error.
Try it online!


Python 3: 


'/' is floating number division, 3 / 2 got 1.5; int(3 / 2 * 2) is 3.
print is a function, so the first statement read as (print(...))*1.
function print returns None; Multiplication do not work on None x int, so it report "unsupported operand".
Try it online!