[Question]
  [
In this question I will talk about programs as strings, this is strings of bytes, not characters. How your resultant program is rendered or displayed is not important to this challenge, only how it appears in memory matters.
A [pristine program](https://codegolf.stackexchange.com/questions/63433/programming-a-pristine-world) is a program \$S\$ that when run does not error, however it will error whenever a continuous substring of size \$n\$, where \$1\leq n < \left|S\right|\$, is removed.
A filthy program is the opposite, it is a program \$S\$ that when run *does* error, however whenever a continuous substring of size \$n\$, where \$1\leq n < \left|S\right|\$, is removed, it does not error.
For this challenge an error is non-empty output to STDERR.
Your challenge is to write a filthy program that uses as many unique bytes as possible. This means you will get one point for every unique byte that appears in your code with a larger score being better. The maximum score is thus 256.
  
[Answer]
# [Unary](https://esolangs.org/wiki/Unary), 14 bytes
```
123456789ABCDE
```
This encodes the brainfuck program `[`, which errors due to unmatched brackets.
Removing bytes will result in `>`, `<`, `+`, `-`, `.`, `,` or the empty program, which are valid brainfuck programs.
[Answer]
# [R](https://www.r-project.org/), 3 bytes
```
qrt
```
[Try it online!](https://tio.run/##K/r/v7Co5P9/AA "R – Try It Online")
A name of an object is a valid program in R. 
`qrt` is not the name of anything, so it returns an error.
`q` is the quit function
`qr` is the QR decomposition function
`rt` is the t distribution sampling function
`qt` is the t distribution inverse CDF
`t` is the transpose function
[Answer]
# [Jelly](https://github.com/DennisMitchell/jelly), ~~4 5 6 7 8 10~~ 11 bytes
```
“a”;⁽PFð+µU
```
[Try it online!](https://tio.run/##y0rNyan8//9Rw5zERw1zrR817g1wO7xB@9DW0P//AQ "Jelly – Try It Online")
[Verify it.](https://tio.run/##dVG9TsMwEN79FJYYkihRlYitKJUY2hGxMJWqCs0VjBw7ctyKbmVnY0Jq34GFgYEFnoS8SGrHpm4o3JDcXb4f@0u5knecnTYznkPqeV693mT1entWP35cjr5ew8@3K7Vt5oIX@B4oXWFSlFxIM0xhmVGs6wRntOCV1P2xxvf7S4IsUZICEJJxqpuefvgBQoyzoRBcVDjFMQLXojkXuJKZYhKGRcZuwafAfH3gIEyCPtKWGgQsd5CWESaRg5rVIA4sRZf@MpWCFAXkyk2P436Lm@DQjEq1P9kTpFg5ti4B1YJKxXV5@Ieq0XgS7AnwMINSdgXsVcMUJ519KQiTHakDHVpBV8XF1xFCyMh418yL1E3UH1ZZk7l1HcRGxYLOb/gS8E8c2trierjePimm87WMC/4PfPOsjfZp/QqnDcWEgYfti3DWER4tKP1L8ugEDphzqFQO0jDskZtmBw)
Tries to add a string with an integer.
Some of the possible subprograms:
`“a”` is a string literal.
`“a` is the same string literal.
`“` is the empty string.
`“a”;` concatenates "a" with itself.
...too many to enumerate them all.
[Answer]
# Polyglot, 3 bytes
```
1 2
```
Works in:
* JavaScript
* Ruby
* R
* Octave
* GHCi
* Julia
In JavaScript, throws *SyntaxError: unexpected token: numeric literal* or a similar error.
All other strings are valid numeric literals (**1**, **2**, or **12**).
---
In GHCi this throws
```
<interactive>:1:1: error:
    • Non type-variable argument in the constraint: Num (t1 -> t2)
      (Use FlexibleContexts to permit this)
    • When checking the inferred type
        it :: forall t1 t2. (Num t1, Num (t1 -> t2)) => t2
```
This is because it tries to apply `1` to `2` as a function, however it cannot. When any part of this is removed it simply becomes a numeric literal.
[Answer]
# [Python 2](https://docs.python.org/2/), 2 bytes
### Unexpected character after line continuation character
```
\0
```
`\` followed by any of `123456789 #`  
[Try it online!](https://tio.run/##RYw9CoAwDIX3niJbFgdxFDyJdZCYYkHa0lTQ09coBZf398FLd9ljGGqluLHABDNa22OnqvIGXIyLGV4OPnwuo4GUfShfM1DyrQvwxdSWhlFOIhZBo5A4lfFHbvUHth/EWh8 "Python 2 – Try It Online")
### Invalid octal number
```
08
```
`0` followed by any of `89`  
[Try it online!](https://tio.run/##RYwxCoAwEAT7vOK6bSzETsGXiIWcJwYkCbkI@voYJWCxLDsDG@60e9flzH4VpZEmtD0atCVvYzabj/Rasu5rHQyFaF36lqEU70JILuFKqoaezKIKUyRLSMOvtsUeqD9Azg8 "Python 2 – Try It Online")
### Unexpected Indent
```
 0
```
 or `\t` followed by any of `123456789\`  
[Try it online!](https://tio.run/##RYwxCsMwFEN3n0KbliztGOhJQobw80MNxTb@LiSndx1j6CCE3gOlq7xjeNYqcVfDCwvx4ES03M3VHTHjtvCht80OKftQ@nIo@WoEeqoMMjTtK6JmdE2KpjL/1bH5D8cPWesP "Python 2 – Try It Online")
[Answer]
# [Python 2/3](https://docs.python.org), 3 bytes
```
4\f2
```
OR
```
4\x0c2
```
[Try it online!](https://tio.run/##bZBNb4MwDIbv@RUWvYCK0Fb21Uo9UKSddpp2zCUNRqBFCXLCtP56lgAb3YaVSNHj145fdxfXGL0bhgprwE@UvRNnhbFNDgx8RFH0iq4nDW0Nrmkt@LPoQJoKMy8axY4uU1WIIPJt2PSW2LklR1PLZ6EssivwRj2yDbwY8w61IchBNoKEdEg284lie9qW4wREhjIodBVY6mlahJuWYBvTqwqEUnBG@BCqrTLGgj2LgmSTx7M1BUeIuOOa15xgc3uzy@/uHx6f9pxPdsIEBbQa1DJ5YKc/7JuXKzyE35w27nq7o48EhB//N50Y/9di3ucsXC8uk8NaHXTUahcTdjT/mzD2s4ph@AI)
In python "\f" is the same as "\x0c" and is a [form feed](https://en.wikipedia.org/wiki/Page_break#Form_feed) character. This means that it indicates for a printer to go to the next line.
If a python expression starts or ends with `\f`, it is basically ignored so `\f2` is a valid expression. 
The `4` and `2` can be any number 0-9. However, for the first byte to be `0` is only valid in Python 2.7.15, as `02` was made a legal declaration of `2`.
So the expression itself fails with a Syntax Error, because there are two numbers separated by a whitespace. However, any shortening either puts `\f` at the beginning or end, where it doesn't matter, or it creates `42` which is valid.
(It is worth noting that in IDLE this file opens looking like "42".)
Form feed explanation source: <https://stackoverflow.com/a/26184126>
[Answer]
# [Dyalog APL](https://www.dyalog.com/), 5 bytes ([SBCS](https://github.com/abrudz/SBCS))
```
~≢0 1
```
[Try it online!](https://tio.run/##SyzI0U2pTMzJT///v@5R5yIDBcP//wE "APL (Dyalog Unicode) – Try It Online")
or
[test all the possible programs](https://tio.run/##XVLbbtNAEH33V4yKVANNlKTcI0Dc7/c7CFGZZBtMnTi1HUoIqVBBke14K1oE5YVb2opQISEIUaASQkr@5PxImI3fkLzenZkzZ88crVG2kvmqYdmFIeQ7MizLnhP5rKaCKeN@Li@mCw/MhzNWsWSXZx3Xqzyae1x9Avk1nZncsXPX7j179yFsHT5y9NjxEydPnT5z9tz5CxcvXb5y9dr1Gzdv3b6DcBVRL4Xo713IZ/sRrB1AsH4QwUf4bfifkxOD3mAFfgj5cx6NJTReQXaw0tyOyEcUIlxA@Bz@F/gbCNcRrj1NQH6H/AG5DNmEDBD9QfgG8gOi35CvIRchNxB8QtAa/Noyfg/@KmQPzRdovERjGYsMea/xyMQJ4lE0T7jeKKhpRGkW2ILsZlWJlBGiWPaqlLPzgkyXXM8xSgVB41SyPXLEbMV0RJ4bi26BOXRFZpYKNKYTK@0mSB/L6oqXslniWxNKRrig4KQLx7G5W9WnVF5p73LwP86t5HLCdXWtrk2bliccLta2Qm7y129zz7YU/@pDJVKJmOcZ0pTR49FUVisbjufGU7KjiVSNG2r9b5kJ3nl1FE1HRZtJRTUK1SF2ox6TjOj6babgrP82TbEaSh9iDPFLGMHqCjK6T1NuK9uX1BMb/gM "APL (Dyalog Unicode) – Try It Online")
There sure are better boring answers, but this is the best non-boring one I've found
SBCS is required as Dyalog Classic seems to always have output in STDERR, making it unusable.
[Answer]
# [Zsh](https://www.zsh.org/), 2 bytes
```
:#
```
[Attempt This Online!](https://ato.pxeger.com/run?1=m724qjhjwYKlpSVpuhaLrJQhDCgfJg4A)
Zsh is very good at producing errors, so this challenge is very hard.
* `:` on its own is command which does nothing
* `#` is a comment
* `:#` is a single command, which doesn't exist, and therefore errors. (`#` is only a comment when it's at the start of a word)
]